废话不多说,上代码
首先在body里创建img标签
var img = document.createElement("img");
img.className = "qrcode-img";
img.id = "qrcode-img";
img.draggable = false;//这个必须要
img.style = "position: fixed;opacity: 0;z-index: -1;display: none;";
window.document.body.appendChild(img);
然后在父页面接受子页面(iframe)的postmessage事件
window.addEventListener("message", function (e) {
var data = {}
data = JSON.parse(JSON.stringify(e.data))
if (data.type === 'img:show') {
console.log(data)
// img:show时将图片置于顶层, 并设置src为含有二维码的图片地址
var qrImg = document.getElementById("qrcode-img")
var iframe = document.getElementById("cyyiframe")//获取iframe
var top = data.content.top + iframe.getBoundingClientRect().y;
var left = data.content.left + iframe.getBoundingClientRect().x;
qrImg.setAttribute('src', data.content.src);
qrImg.style = `display: block;position: fixed;top: ${top}px;left: ${left}px;width: ${data.content.width}px;height:
${data.content.height}px;opacity: 0;z-index: 10001;`
}
if (data.type === 'img:hide') {
console.log(data)
// img:hide时将,将图片置于底层
var qrImg = document.getElementById("qrcode-img")
qrImg.removeAttribute('src');
qrImg.style = 'position: fixed;opacity: 0;z-index: -1;display: none;'
}
}
注意:
在子页面(iframe)中判断当前设备类型,ios端再发postmessage事件,避免安卓端不识别。