2013-12-11 40 views
2

當您輸入無效地址時,Chrome會顯示一個灰色頁面,指出「糟糕!谷歌瀏覽器無法找到X.您的意思是Y?」控制「糟糕!Chrome無法找到...」頁面?

因爲這不是一個HTTP頁面,而是瀏覽器內置的東西之一,所以我不能在其中放入內容腳本並且無法控制它,所以我的擴展程序被凍結,直到用戶手動轉到另一頁。

由於擴展名應該能夠自行控制瀏覽器,因此在此頁面隨時打開時,它會自動返回到頁面有內容腳本訪問,然後顯示消息。

這是不可能的嗎?

回答

3

您可以使用chrome.webNavigation.onErrorOccurred來檢測此類錯誤,並根據需要重定向到其他頁面。除非你有足夠的理由這樣做,否則我強烈建議針對實現此功能,因爲它可能會破壞用戶對瀏覽器行爲方式的期望。

然而,示例代碼:

chrome.webNavigation.onErrorOccurred(function(details) { 
    if (details.frameId === 0) { 
     // Main frame 
     chrome.tabs.update(details.tabId, { 
      url: chrome.runtime.getURL('error.html?error=' + encodeURIComponent(details.error)) 
     }); 
    } 
}); 
+0

我需要它,因爲它是一個語音控制擴展。當用戶說「轉到X.com」時,如果誤看了他,它會提示Oops頁面和語音控制將停止工作。對於截癱用戶,語音控制不能隨時停止,或者有人必須再次爲他們啓動語音控制。謝謝你的偉大答案。 – Aerovistae

+0

@Aovovistae您是否考慮過使用[瀏覽器操作按鈕](https://developer.chrome.com/extensions/browserAction)使用[背景頁](https://developer.chrome.com/extensions/background_pages.html) html的)? –

+0

@Aovovistae順便提一下,「找不到內容」腳本不是唯一禁用內容腳本的頁面。其他頁面包括(但不限於):chrome:,about:,chrome-extension :.數據:,blob:,文件:(禁止訪問文件URL時)以及Chrome網上應用店中的任何頁面。 –

1

根據the docs唯一頁面的分機可以忽略是:

  • 書籤管理器
  • 歷史
  • 新標籤

所以,一個擴展可以不會改變/控制/影響瀏覽器關於「糟糕!...」頁面的行爲。