2016-01-13 55 views
2

我爲將網站腳本添加到其網站的網站提供了一些附加服務。從技術上講,我的腳本不會與網站的實際功能相互作用,最重要的是讀取一些信息,代碼的主要部分僅在事件發生後才運行(像Google Analytics一樣)。Javascript錯誤對瀏覽器的影響

最近在某些情況下導致「X未定義」錯誤發生,並且客戶端堅持認爲這個錯誤會導致他們的網站崩潰。他們給我發了一張屏幕截圖,顯示了一個空白頁面和一個顯示錯誤的控制檯截圖,但他們刪除了我的代碼,因此我無法實時看到它。

我的問題是,如果有這些類型的錯誤可能會影響網站的任何可能性。例如,假設這段代碼的網站上運行:

var tmp = Sizzle('h1'); 
tmp[0].innerHTML = "test"; 

假設由於某種原因,嘶嘶聲已經不是代碼運行時或定義,有沒有在網頁上的任何元素H1所以tmp是空的。任何情況下產生的錯誤都會影響外部環境。例如代碼運行的頁面?顯然,如果我已經覆蓋了body元素,那麼會影響網站,但我的問題只是關於「x未定義」或語法錯誤。

+1

一般來說,一個空白頁是指一些渲染問題,這往往不是通過什麼用JavaScript觸發。一般的規則是,只要你不與渲染的東西互動,它就不會有所作爲。 – weirdpanda

回答

3

An Error會中斷當前函數堆棧的執行。

例如,如果您有一個onclick事件,它會調用一個函數,並且在開始時出現錯誤,它將不會在該代碼之後執行任何操作。但這並不意味着您的網站上的任何JavaScript都不會起作用。一切都會好起來的。因爲如果有一件重要的事情在錯誤發生後沒有被執行,它會改變你的運行時的邏輯。

您也能避免錯誤下井功能堆疊用try-catch塊:

function a() { 
 
    var x = new DoesNotExist() 
 
    alert("test a") // this will not alert() as there is an error before 
 
} 
 

 
function b() { 
 
    try { 
 
    var x = new DoesNotExist() 
 
    } catch (e) {} 
 
    alert("test b") // this will alert because the error is catched 
 
} 
 

 
alert("code is running") 
 
a() 
 
b() // this will not execute as a() broke this script 
 
// however pressing the button b will still alert in b() as it's in a new stack 
 
alert("code finished")
<input onclick="a()" value="a" type="button" /> 
 
<input onclick="b()" value="b" type="button" />

0

由於JavaScript是一種腳本語言,它改變了DOM,並提供用戶交互我會說:一般來說,只要你不干擾網站的內容,它不會影響正在加載的頁面。有兩種可能性,我可以想像,從顯示出來停止頁:

  • 你的JavaScript導致一個無限循環,並因此被加載的內容塊(但他們應該得到類似的頁面沒有反應錯誤)
  • 將取決於他們的網頁上的東西,他們打算用你的代碼,所以它不會加載做建築,因爲它沒有你的代碼
3

,有情況的類型「X的這個錯誤未定義「影響整個網站。

如果其產生「X是未定義」的錯誤代碼是:

  • 函數對象方法內部內 - 這將停止從執行該電流的功能,但有可能將繼續與它下面的腳本。
  • 寫成逐行JavaScript語句這個當前點停止不會與其他腳本進行

可能是你的客戶有崩潰蓬下面更JavaScript語句(頁面的加載內容),不執行這些語句並沒有加載內容。

您可以簡單地添加到您的腳本:

if (typeof variable !== 'undefined') 
    { 
     // else part of the code 
    } 
+0

我的腳本被添加到它自己的

  • 11. 的XPages瀏覽器錯誤
  • 12. JavaScript對象瀏覽器?
  • 13. Javascript影響錯誤的元素
  • 14. 調試隻影響IE9的Javascript錯誤
  • 15. Window.addcloseHandler和Window.addwindowClosingHandler不會影響瀏覽器關閉和瀏覽器刷新事件
  • 16. 錯誤而在瀏覽器
  • 17. Node.js瀏覽器錯誤
  • 18. 發送瀏覽器JavaScript錯誤到Stackdriver錯誤報告
  • 19. 使用webkit瀏覽器瀏覽iframe中的內容的Javascript錯誤
  • 20. 的.htaccess/MOD重寫影響瀏覽器的後退按鈕
  • 21. Javascript:如何執行刷新後會影響瀏覽器的命令?
  • 22. 爲瀏覽器添加太多插件/擴展,影響瀏覽速度?
  • 23. C#響應顯示下載失敗錯誤的Android瀏覽器
  • 24. 瀏覽器縮放如何影響CSS中定義的像素?
  • 25. 什麼是影響IE8瀏覽器的條件代碼?
  • 26. HTML5本地存儲和瀏覽器上的影響/負載
  • 27. ASP.Net mvc,顯示圖片不會影響瀏覽器的URL
  • 28. 受瀏覽器屏幕分辨率影響的元素定位
  • 29. 對JavaScript版本的瀏覽器支持
  • 30. 瀏覽器中的Javascript對象