2012-03-30 45 views
4

問題使用Javascript - 觸發誤差

是否有觸發自定義JavaScript錯誤消息的方式嗎?在Chrome中,我發現console.warn[error,log]用於向瀏覽器發送消息。但是,這隻適用於Chrome(也可能是Firefox)。不過,這行本身在IE瀏覽器中觸發錯誤。

我希望能夠觸發違反Javascript函數規則的錯誤。例如,將對象作爲值的函數期望對象具有「對話框」的屬性。如果該屬性不存在,我想觸發一個錯誤消息「Modal Window:No dialog id specified。」。

語境

我建立一個PHP類和Javascript類一起工作,使我們的應用程序的程序員可以輕鬆地創建對話框,將是統一的,可靠的。


示例代碼

try { 
    if (!params || !params['dialog']) { 
     throw "NoDID"; 
    } 
} 
catch (error) { 
    if (error == "NoDID") { 
     //com.MySITE.js.warn("Modal Window: No dialog id specified."); 
     //Trigger custom error message here. 
    } 
} 

我想消息去,便於開發者調試JavaScript的窗口。只是做「扔」導致「未捕獲的自定義錯誤消息」。我不希望用戶在頁面上看到任何內容。我希望它可以在js日誌中供開發人員使用。

回答

3
if (console) console.warn(... 

(或者你可以使用console.error,執行console.log,console.trace等)。或者你也可以這樣做:

console && console.warn(... 

或者,如果你不喜歡檢查控制檯到處你可以在你的代碼的開始,做:

window.console = console || {warn: function(){}}; 

換句話說,如果瀏覽器沒有控制檯,用虛假的「警告」方法做一個虛假的,不做任何事情的方法。如果你這樣做,你可以在整個代碼中做console.warn,而不用擔心瀏覽器是否有控制檯。

另一種方法是使你自己的警告方法:

function warn(message) { 
    console && console.warn(message); 
} 

,然後你可能只是警告(「出事了」)。

當然,如果你想要真正瞭解IE用戶何時獲得用戶,你需要改爲製作自己的警告消息,這將需要向服務器上的某個地方發出AJAX請求(並且然後在某處發送郵件或其他東西)。

+0

對於IE而言,您可以使用Firebug light(Firebug作爲Firefox JS開發擴展,Firebug light是純粹用JS實現的貧民窟版本,而不是服務器端通知方法),以便您不需要Firefox)。 – machineghost 2012-03-30 17:11:40

+0

我正在開始一個像com.mySite.js這樣的自定義應用程序名稱的實現。不過,我認爲你的解決方案符合法案。 – teynon 2012-03-30 17:19:14

8

使用throw

throw "Deliberate Error!"; 
+0

我希望消息轉到javascript窗口以方便開發人員調試。只是做「扔」導致「未捕獲的自定義錯誤消息」。我不希望用戶在頁面上看到任何內容。我希望它可以在js日誌中供開發人員使用。 - 查看編輯問題中的代碼。 – teynon 2012-03-30 17:04:37