Script Error產生的原因和解法

2021-09-28 20:31:05 字數 1224 閱讀 9290

script error對於前端開發者相信都不陌生,由於沒有具體錯誤堆疊和**行列號,成為可能是最神秘的錯誤之一。

下面介紹script error產生的原理和解決辦法。

跨域資源引用

假如:abc.com下的頁面引用了屬於(cdn) 的demo.js檔案。 若執行中demo.jsrun()方法 內部報了乙個異常,那麼前端的錯誤捕獲指令碼,只會檢測到乙個script error的異常。

這是由於瀏覽器基於安全考慮故意隱藏了其它域js檔案丟擲的具體錯誤資訊。這樣可以有效避免敏感資訊無意中被第三方(不受控制的)指令碼捕獲到,因此,瀏覽器只允許同域下的指令碼捕獲具體的錯誤資訊。具體可以檢視《瀏覽器同源策略以及script error錯誤》。

bool scriptexecutioncontext::sanitizescripterror(string& errormessage, int& linenumber, string& sourceurl)

知道瀏覽器為什麼限制跨域資源引用,解決辦法也不困難。在頁面請求資源時,讓瀏覽器允許我們發起請求,而伺服器(cdn)也允許我們獲取資源,從而得到瀏覽器執行資源的錯誤資訊;這樣分兩步解決。

第一步:給script標籤增加 crossorigin 屬性,讓瀏覽器允許頁面請求資源。

// 以下兩種寫法均可

第二步:給靜態資源響應頭增加允許跨域標記,讓伺服器允許資源返回。

伺服器的http響應頭增加access-control-allow-origin: *或者access-control-allow-origin:

注:大部分主流cdn預設新增了access-control-allow-origin屬性。

由於部分瀏覽器對crossorigin屬性不支援,又或者我們無法往http請求響應頭裡面新增跨域屬性,因此依然可能產生script error

這時還可以通過try catch獲取頁面報錯資訊,將js錯誤重新丟擲或者上報。

try  catch (e)

本篇文章由一文多發平台artipub自動發布

缺陷調研報告 工廠的缺陷的分析報告及產生原因

精彩文件 鍛造成形過程中的缺陷及其防止方法 一 鋼錠的缺陷 鋼錠有下列主要的缺陷 縮孔和疏鬆 鋼錠中縮孔和疏鬆是不可避免的缺陷,但它們出現的部位可以控制。鋼錠中頂端的保溫冒口,造成鋼液緩慢冷卻和最後凝固的條件,一方面使錠身可以得到冒口中鋼液的補縮,另一方面使縮孔和疏鬆集 中於此處,以便鍛造時切除。偏...

4 諧波 諧波失真以及總諧波失真,諧波產生的原因

指原有頻率的各種倍頻的有害干擾。放大1khz的頻率訊號時會產生2khz的2次諧波和3khz及許多更高次的諧波,理論上此數值越小,失真度越低。由於放大器不夠理想,輸出的訊號除了包含放大了的輸入成分之外,還新添了一些原訊號的2倍 3倍 4倍 甚至更高倍的頻率成分 諧波 致使輸出波形走樣。這種因諧波引起的...

移動型別541(委外業務)不產生會計憑證的原因

1 加工費 frl 2 投入 gbb vbo 3 產出 bsv 標準sap系統對外協541發料時,系統不產生憑證。但是在中國會計制度上要求做財務憑證 借 委託加工物資 貸 原材料 這個憑證如何實現?在網上也有人說把541的配置改為有會計憑證產生,但是新的問題來了。因為sap系統的評估範圍最多明細到工...