2011-06-02 43 views
3

我有一個存儲在本地文件系統上的HTML文件。我需要它重定向(或以其他方式顯示)遠程網站,只要該網站在線且可用。如果網站不可用,我需要顯示一個用戶友好的消息。僅當網站可用時重定向瀏覽器

目前我有:

<html> 
<body onload="window.location.href='http://someserver/';"> 
    <p>Connecting to remote server...</p> 
</body> 
</html> 

的問題是,如果服務器不可用,則用戶提供從網絡瀏覽器的醜陋「無法找到服務器」頁。如果頁面導航遇到問題,我寧願顯示一些自定義的HTML來指示用戶的情況。我應該嘗試使用哪些常用解決方案,對此會有好處?

要求:必須在IE6中通過IE9。 FireFox/WebKit引擎不會用於此應用程序。

+0

您可以對URL進行XHR並查看它是否成功。 – Pointy 2011-06-02 21:35:56

+0

當你說'遠程網站'時,我認爲這阻止了JavaScript的運行(由於[同源策略](http://en.wikipedia.org/wiki/Same_origin_policy))。我想你需要一個服務器端腳本(例如php)來實現這個。 – 2011-06-02 21:36:36

+1

HTML文件作爲Windows資源存儲在可執行文件中。具體而言,它使用URL如:res://mylibrary.dll/redirector.htm進行訪問。然後,它使用IE瀏覽器控制器託管在C++程序中。 (我應該補充/道歉,我有好幾年沒有經常對HTML/JS做任何事情...... - 我的大部分工作都是用C++編寫的)我希望/認爲res:協議有一定的自由度從安全的角度來看,看看IE是如何使用內部的錯誤頁面的協議,等等...... – 2011-06-02 21:41:45

回答

7

一個簡單的方法是嘗試加載已知的小圖像,並檢測加載是否完成。

<img src="http://www.rgagnon.com/images/pdf.gif" 
    onload="window.location='http://www.rgagnon.com';" 
    onerror="window.location='http://www.google.com';" 
> 

如果pdf.gif被加載,我們切換到該網站,如果不是我們去別的地方。

+0

非常簡單的解決方案,似乎很好。 – 2011-06-06 18:39:44

2

您可以在加載時使用AJAX樣式的請求來確保服務器在將瀏覽器重定向到它之前處於活動狀態,但不能保證服務器在發生重定向時仍會保持活動狀態。

+0

這個解決方案仍然可以捕獲足夠的99%的情況。最常見的情況是用戶在沒有連接到互聯網的筆記本電腦上,例如... – 2011-06-02 21:43:03

相關問題