2011-05-13 106 views
1

我試圖在包含Javascript文件時檢查URL是否返回404,403等。它工作正常,但我仍然在「Chrome開發人員工具」中遇到錯誤。檢查url是否返回404

這是我的代碼:

(function() { 
try 
    { 
      var ml = document.createElement('script'); 
     ml.type = 'text/javascript';  
     ml.async = true; 
     ml.id = 'monoloop_invoke'; 
     ml.onerror = function(){alert('File does not exist');}; 
     ml.src = 'http://somedomain.com/somefile.js'; 
      var s = document.getElementsByTagName('script')[0]; 
      s.parentNode.insertBefore(ml, s); 

    } 
catch(err) 
    { 
    alert('Error: '+err); 
    } 
     }) 
    ();  

如果文件不存在,它顯示錯誤「文件不存在」從ml.onerror功能。這很好。但問題是,我仍然在我的控制檯中看到如下錯誤行:

GET http://somedomain.com/somefile.js 403 (Forbidden) 

並且try/catch無法捕獲此錯誤。

任何人都知道如何解決這個問題?或者在包含它之前存在URL是否存在另一種測試方法?我不能使用AJAX,因爲我需要以跨域的方式使用它。如有必要,我可以使用jQuery。

編輯:它不顯示在IE中的錯誤,所以我想這可能只是涉及到鉻報告問題的方式。有沒有人看到一個更優雅的解決方案來檢查一個文件是否存在,而沒有在控制檯中進行任何操作。

+0

那麼,你提出的要求,所以當然Chrome的要告訴你,它返回一個403 – Jeremy 2011-05-13 13:33:47

+0

我不認爲這會產生一個錯誤。 你不能使用Ajax並調用該頁面,獲取內容並解釋它嗎? – Pwnna 2011-05-13 13:34:03

+1

使用引用無效URL的src屬性將'script'標記插入DOM ...現在引發異常? – 2011-05-13 13:37:10

回答

3
jQuery.getScript(url, [ success(data, textStatus) ]) 

描述:加載從使用HTTP GET請求的服務器的JavaScript文件,然後執行它。

url 一個字符串,其中包含請求發送到的URL。

成功(數據,textStatus) 如果請求成功執行的回調函數。

趕上錯誤使用ajaxError事件:

http://api.jquery.com/ajaxError/

+0

這是否適用於跨域網址? – Jeremy 2011-05-13 13:43:39

+0

從問題:「我不能使用AJAX,因爲我需要以跨域的方式使用它。」當然,這個要求可能會讓整個遊戲成爲不可能......但仍然如此。 – 2011-05-13 13:44:21

+0

這似乎在所有瀏覽器中都能正常工作 - 也是跨域的,但它仍然會在Chrome控制檯中生成「GET http://somedomain.com/somefile.js 403(Forbidden)」 - 但也許這只是不可能的改變 – sunebrodersen 2011-05-13 13:56:25