我有一個Javascript函數,如果出現問題會引發異常。我習慣了這種行爲,總有一天花了20多分鐘才找到代碼中的錯誤,因爲函數沒有拋出異常,它只是失敗了。通過jQuery Ajax加載的Javascript不會在Firebug中引發預期的異常
使用Firebug插件在Firefox中試試以下代碼。 與函數創建一個HTML頁面:
function myfunc(key)
{
alert('I started');
if(!key)
throw 'myfunc: Invalid arguments';
}
然後用代碼創建第二個HTML頁面:
<script type="text/javascript">
myfunc(null);
alert('Exception was before me!');
</script>
和使用jQuery $就功能的第一個頁面加載第二個HTML頁面。
代碼將正確執行,但您將看不到在Firebug控制檯中記錄的異常。
如果右側FRST HTML頁面上運行相同的功能MYFUNC(空),你會本身iimediately在Firebug紅線說:
uncaught exception: myfunc: Invalid arguments
但並沒有什麼退出,如果它被執行jQuery(我猜,jQuery使用eval在$ .ajax之後運行 腳本)。
這是否意味着jQuery本身捕捉異常並在評估Javascript時忽略它們?有什麼方法可以告訴jQuery讓我的異常通過嗎?
我只是想讓jQuery重新拋出'myfunc:Invalid arguments'異常,但它不會發生。如果我從第一個html頁面右鍵運行myfunc(null),Firebug會顯示一條紅線:「未捕獲的異常:myfunc:無效的參數」,我知道發生了什麼。但是,如果它發生在AJAX腳本中,異常消失。 – JustAMartin