2017-05-02 54 views
0

我試圖打開一個文件window.open()會拋出顯示警報如何在HTTP錯誤的情況下404.3

HTTP錯誤404.3

現在我知道有IIS Settings或設置staticContent解決方案在web.config中。但我只想在404.3錯誤的情況下顯示警報。

+0

你可以圍繞'windows.open()'和'嘗試{windows.open()}趕上(){...}' – Weedoze

+0

我試圖用'try'和'catch'但它仍然會打開'url'然後拋出錯誤。我想要做的是不打開'url'。 – Niklaus

回答

0

我發現了另一個解決方案爲我工作。

  var XMLHttp = new XMLHttpRequest(); 
      XMLHttp.open("GET", "" + url + ""); 
      XMLHttp.onreadystatechange = handlerFunction; 
      XMLHttp.send(null); 
      function handlerFunction() { 
       if (XMLHttp.readyState == 4 && XMLHttp.status == 404) { 
        alert("File not reachable"); 
       } 
       else if (XMLHttp.readyState == 4 && XMLHttp.status !== 404) { 
        window.open(url, '_blank'); 
       } 
      } 
+1

如果您只想檢查頁面是否存在,則應該使用「HEAD」請求而不是「GET」請求。 – david25272

0

如果你得到一個錯誤404.3,您的代碼不會被解釋,所以IIS設置是這裏的解決方案

+0

據我瞭解,404.3是服務器端錯誤。所以代碼將在瀏覽器中被解釋和執行。只有當我們訪問某個不可訪問的頁面時,錯誤纔會發生。 – Niklaus

+0

在我的情況下,我不得不將我的應用程序池設置爲.net framework 4.0,默認爲2.0 – Ferus7

0

它取決於你的情況要如何解釋錯誤頁面錯誤類型。

正如你所知錯誤404.3發生在服務器端(IIS),而不是在客戶端,所以它必須在IIS web.config或後端的東西控制,但可以輕鬆地將用戶重定向到具有特定查詢字符串到錯誤頁面和錯誤頁面控制查詢字符串!

例如看看這個:

Oops.html
<customErrors mode="On" defaultRedirect="LogIn.aspx" redirectMode="ResponseRewrite"> 
    <error statusCode="403" redirect="ErrorPages/Oops.html?Error=NoAccess"/> 
    <error statusCode="404" redirect="ErrorPages/Oops.html?Error=FileNotFound"/> 
    <error statusCode="500" redirect="ErrorPages/Oops.html?Error=ServerError"/> 
</customErrors> 

查詢字符串,並顯示您的警告:

function getParameterByName(name) { 
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); 
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), 
     results = regex.exec(location.search); 
    return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); 
} 

,並在負荷:

switch (getParameterByName("Error")) { 
    case 'NoAccess': 
     alert('The page you are looking for is not exist in the system.'); 
     break; 
    case "FileNotFound": 
     alert('File not found.'); 
     break; 
    case "ServerError": 
     alert('Error in server.'); 
     break; 
    default: 
     break 
} 
相關問題