提交 d9fc80eb 编写于 作者: 雪洛's avatar 雪洛

fix: 组件getRealPath过滤src空值

上级 e380df20
<template> <template>
<uni-canvas <uni-canvas
:canvas-id="canvasId" :canvas-id="canvasId"
:disable-scroll="disableScroll" :disable-scroll="disableScroll"
v-on="_listeners" v-on="_listeners"
> >
<canvas <canvas
ref="canvas" ref="canvas"
width="300" width="300"
height="150" height="150"
/> />
<div style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; overflow: hidden;"> <div style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; overflow: hidden;">
<slot /> <slot />
</div> </div>
<v-uni-resize-sensor <v-uni-resize-sensor
ref="sensor" ref="sensor"
@resize="_resize" @resize="_resize"
/> />
</uni-canvas> </uni-canvas>
</template> </template>
...@@ -279,37 +279,37 @@ export default { ...@@ -279,37 +279,37 @@ export default {
} }
}, },
preloadImage: function (actions) { preloadImage: function (actions) {
var sefl = this var self = this
actions.forEach(function (action) { actions.forEach(function (action) {
var method = action.method var method = action.method
var data = action.data var data = action.data
var src = '' var src = ''
if (method === 'drawImage') { if (method === 'drawImage') {
src = data[0] src = data[0]
src = sefl.$getRealPath(src) src = self.$getRealPath(src)
data[0] = src data[0] = src
} else if (method === 'setFillStyle' && data[0] === 'pattern') { } else if (method === 'setFillStyle' && data[0] === 'pattern') {
src = data[1] src = data[1]
src = sefl.$getRealPath(src) src = self.$getRealPath(src)
data[1] = src data[1] = src
} }
if (src && !sefl._images[src]) { if (src && !self._images[src]) {
loadImage() loadImage()
} }
/** /**
* 加载图像 * 加载图像
*/ */
function loadImage () { function loadImage () {
sefl._images[src] = new Image() self._images[src] = new Image()
sefl._images[src].onload = function () { self._images[src].onload = function () {
sefl._images[src].ready = true self._images[src].ready = true
} }
/** /**
* 从Blob加载 * 从Blob加载
* @param {Blob} blob * @param {Blob} blob
*/ */
function loadBlob (blob) { function loadBlob (blob) {
sefl._images[src].src = (window.URL || window.webkitURL).createObjectURL(blob) self._images[src].src = (window.URL || window.webkitURL).createObjectURL(blob)
} }
/** /**
* 从本地文件加载 * 从本地文件加载
...@@ -318,7 +318,7 @@ export default { ...@@ -318,7 +318,7 @@ export default {
function loadFile (path) { function loadFile (path) {
var bitmap = new plus.nativeObj.Bitmap('bitmap' + Date.now()) var bitmap = new plus.nativeObj.Bitmap('bitmap' + Date.now())
bitmap.load(path, function () { bitmap.load(path, function () {
sefl._images[src].src = bitmap.toBase64Data() self._images[src].src = bitmap.toBase64Data()
bitmap.clear() bitmap.clear()
}, function () { }, function () {
bitmap.clear() bitmap.clear()
...@@ -337,7 +337,7 @@ export default { ...@@ -337,7 +337,7 @@ export default {
if (status === 200) { if (status === 200) {
loadFile(d.filename) loadFile(d.filename)
} else { } else {
sefl._images[src].src = src self._images[src].src = src
} }
}).start() }).start()
} }
...@@ -350,20 +350,20 @@ export default { ...@@ -350,20 +350,20 @@ export default {
} }
} }
xhr.onerror = window.plus ? plusDownload : function () { xhr.onerror = window.plus ? plusDownload : function () {
sefl._images[src].src = src self._images[src].src = src
} }
xhr.send() xhr.send()
} }
if (window.plus && (!window.webkit || !window.webkit.messageHandlers)) { if (window.plus && (!window.webkit || !window.webkit.messageHandlers)) {
sefl._images[src].src = src self._images[src].src = src
} else { } else {
// 解决 PLUS-APP(wkwebview)以及 H5 图像跨域问题(H5图像响应头需包含access-control-allow-origin) // 解决 PLUS-APP(wkwebview)以及 H5 图像跨域问题(H5图像响应头需包含access-control-allow-origin)
if (window.plus && src.indexOf('http://') !== 0 && src.indexOf('https://') !== if (window.plus && src.indexOf('http://') !== 0 && src.indexOf('https://') !==
0) { 0) {
loadFile(src) loadFile(src)
} else if (/^data:.*,.*/.test(src)) { } else if (/^data:.*,.*/.test(src)) {
sefl._images[src].src = src self._images[src].src = src
} else { } else {
loadUrl(src) loadUrl(src)
} }
...@@ -449,7 +449,7 @@ export default { ...@@ -449,7 +449,7 @@ export default {
}, this.$page.id) }, this.$page.id)
return return
} }
if (!callbackId) { if (!callbackId) {
// fix [...]展开TypedArray在低版本手机报错的问题,使用Array.prototype.slice // fix [...]展开TypedArray在低版本手机报错的问题,使用Array.prototype.slice
return { return {
data: Array.prototype.slice.call(imgData.data), data: Array.prototype.slice.call(imgData.data),
......
...@@ -2,13 +2,13 @@ ...@@ -2,13 +2,13 @@
<uni-image v-on="$listeners"> <uni-image v-on="$listeners">
<div <div
ref="content" ref="content"
:style="modeStyle" :style="modeStyle"
/> />
<img :src="realImagePath"> <img :src="realImagePath">
<v-uni-resize-sensor <v-uni-resize-sensor
v-if="mode === 'widthFix'" v-if="mode === 'widthFix'"
ref="sensor" ref="sensor"
@resize="_resize" @resize="_resize"
/> />
</uni-image> </uni-image>
</template> </template>
...@@ -43,7 +43,7 @@ export default { ...@@ -43,7 +43,7 @@ export default {
return this.originalWidth && this.originalHeight ? this.originalWidth / this.originalHeight : 0 return this.originalWidth && this.originalHeight ? this.originalWidth / this.originalHeight : 0
}, },
realImagePath () { realImagePath () {
return this.src && this.$getRealPath(this.src) return this.$getRealPath(this.src)
}, },
modeStyle () { modeStyle () {
let size = 'auto' let size = 'auto'
......
...@@ -6,10 +6,10 @@ import { ...@@ -6,10 +6,10 @@ import {
export default { export default {
methods: { methods: {
$getRealPath (src) { $getRealPath (src) {
return getRealPath(src) return src ? getRealPath(src) : src
}, },
$trigger (name, $event, detail) { $trigger (name, $event, detail) {
this.$emit(name, processEvent.call(this, name, $event, detail, this.$el, this.$el)) this.$emit(name, processEvent.call(this, name, $event, detail, this.$el, this.$el))
} }
} }
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册