之前遇到過一個奇怪的問題,在其他瀏覽器下一切正常,但在萬惡的IE下,卻一直不行。
具體問題場景就是:比如orderDetail頁面出現問題,那么只要是路由跳轉的,點第1次無法跳轉,必須得點第2次才可以跳轉,但是跳轉過去之后,頁面也是一片空白,不加載路由頁面。然后控制台報錯:strict 模式下不允許分配到只讀屬性。
所以我往這方面搜索,在網上看到一些相關信息
IE中JavaScript異常提示:strict 模式下不允許分配到只讀屬性。報異常的代碼如下:
document.getElementById("mapLayer").style = "width: 98%;height:98%;";
解決方法如下: 將css屬性拆分開依次設置屬性值即可。
document.getElementById("mapLayer").style.width = "98%"; document.getElementById("mapLayer").style.height = "98%";
注:在這嚴格模式下xxx.style會被認定為只讀屬性,所以在IE中報錯。
但是,我在我的代碼里找了幾圈都沒有找到類似的只讀屬性。
沒辦法,只能使用傻辦法一層一層排查。最后發現把orderDetail頁面里的內容全部換成其他頁面,發現是可以正常的,由此可以確定,問題就出在該orderDetail頁面里,然后再到orderDetail頁面里一層一層排查。發現問題出在這里
import QRCode from 'qrcode'
// 動態生成二維碼
useqrcode () { let canvas = document.getElementById('canvas') let _this = this QRCode.toCanvas(canvas, this.qrcode, function (error) { if (error) { _this.$message({ message: '二維碼生成失敗,請重新支付', type: 'error' }) } }) },
關鍵是不知道為什么引入QRCode,然后畫圖會導致IE報這種錯,對IE實在是蛋疼,沒辦法只能修改這地方
解決方案:換 qriously 生成二維碼
<qriously class="qrcode" :value="qrcode" :size="150"/>
修改之后一切正常了。
