2012-11-26 49 views
3

我有一個包含自定義URL協議鏈接的頁面。自定義URL協議在安裝exe時會在用戶的系統上註冊。當用戶點擊網頁上的自定義網址協議鏈接時,它會啓動該exe文件(目前全部正常工作)。但是當他們點擊該鏈接並且沒有在本地安裝exe時,他們會在瀏覽器中獲得一個標準的錯誤頁面。 因此,如果他們沒有本地exe文件,我希望瀏覽器提供一個自定義錯誤頁面,而不是告訴他們他們需要下載exe文件。我認爲這可能與JavaScript在單擊鏈接時監聽該錯誤一樣簡單,並且如果錯誤存在,則顯示自定義錯誤頁面。但我不知道該怎麼做。那裏的錯誤頁面是「網頁無法顯示,最有可能的原因:這個網頁上的一些內容或文件需要一個你沒有安裝的程序。」 (404錯誤我認爲?) 任何幫助是超級讚賞!Javascript 404錯誤檢測

回答

3

我建議做一個測試函數,確定該協議是否已經安裝:

  1. 使用協議,讓您的網頁的AJAX調用測試頁。
  2. 如果這樣做沒有錯誤,那麼頁面的其餘部分可以安全地使用該協議。
  3. 如果AJAX調用失敗,那麼您將知道該協議尚未安裝。

jquery會使這種方法輕鬆工作。您甚至可以根據測試功能的成功/失敗動態更改鏈接的URL。鏈接可以做出彈出警告,用戶需要安裝協議處理程序。

+2

你打我:) –

+0

欣賞的迴應。我想我對於一般化的解決方案看起來並沒有那麼多,因爲我是特定的代碼。我知道它也可以通過JavaScript來完成,但不知道我有多少偏好。我所知道的是,我不能用任何語言來做! ;-)我期待的代碼示例..... – Tim

+0

順便說一句,你說打個電話給「測試頁」。該協議正在調用一個本地exe文件。所以你說要對本地系統註冊表進行ajax調用來查看url協議是否在那裏?使用函數調用實際的url協議並不容易,並且如果它的錯誤出現錯誤,或者它不會繼續調用並啓動本地exe文件?我可能會誤解,但這聽起來像是在爲流程添加不必要的步驟。這發生在鏈接點擊上,而不是頁面加載上。 – Tim

0

404是一個HTTP狀態碼,所以我不認爲你可以期望當你調用你的自定義協議時。你可以嘗試登錄window.onerror,但如果這有效,我會感到很驚訝。

我在類似的情況下做的是在安裝中包含一個瀏覽器插件。然後,您可以從腳本檢查處理程序是否在用戶嘗試調用之前安裝。此外,您可以讓您的插件報告安裝的版本,以便您可以提示用戶進行升級。缺點是如果您不想限制支持的瀏覽器,則需要處理多個插件模型和體系結構。