既然这样可以正确获取到数据,问题基本上就得到了解决。
var a = parent.document.getElementById(“sunny”);
console.log(“a:”);
console.log(a);
var qrcode = new QRCode(document.getElementById(“qrcode”), {
width : 200, // 设置二维码宽高96
height : 200
});
qrcode.makeCode(a); // 生成二维码内容
以上语句便可生成正确的二维码信息。
残酷的现实
现实总是那么的残酷。生成的二维码不对,内容为空!
回过头来还得继续使用localStorage,但其保存的总是上一次的值,因为二维码页面加载早于父页面,导致localStorage的值总是滞后。
经过证实localStorage.removeItem(‘billInfo’);确实起作用了。好纠结啊!
纠结纠结…
既然子页面加载较早,自己就想是不是可以通过延迟页面加载的方法解决。以下代码实现了子页面方法的延迟执行,结果亮了!可以了,我TTM佩服自己了!不容易啊!
<script>
// 当页面加载的时候可以调用某些函数
window.onload = function(){
setTimeout(function(){
var billInfo = localStorage.getItem('billInfo');
console.log("billInfo:");
console.log(billInfo);
var a = parent.document.getElementById("sunny");
console.log("a:");
console.log(a);
var qrcode = new QRCode(document.getElementById("qrcode"), {
width : 200, // 设置二维码宽高96
height : 200
});
qrcode.makeCode(billInfo); // 生成二维码内容
localStorage.removeItem('billInfo');
// qrcode.makeCode("http://192.168.1.105:8088/lmapp/billInformation.html");
},0.5*1000);//0.5秒后执行
};
</script>
有图有真相
总结
其实以上问题的解决只是绕过了localStorage,而没有实质性的解决localStorage存储问题。本质原因后期进行解决。有关子页面与父页面脚本执行先后顺序,应该是子页面较早执行,若子页面需要利用父页面中的值,则子页面脚本代码需要延迟执行。