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

fix: 组件getRealPath过滤src空值

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