2014-08-27 76 views
2

即使在選擇'允許以不確認模式'後,我的擴展程序(使用頁面動作在某些URL中呈現)也不會以隱身模式顯示。 background.js有以下內容。如何在無痕模式下爲Chrome擴展程序啓用pageAction圖標?

chrome.runtime.onInstalled.addListener(function() { 
    // Replace all rules ... 
    chrome.declarativeContent.onPageChanged.removeRules(undefined, function() { 
    // With a new rule ... 
    chrome.declarativeContent.onPageChanged.addRules([ 
     { 
     // That fires when a page's URL contains a 'g' ... 
     conditions: [ 
      new chrome.declarativeContent.PageStateMatcher({ 
      pageUrl: { urlContains: 'sears' }, 
      }) 
     ], 
     // And shows the extension's page action. 
     actions: [ new chrome.declarativeContent.ShowPageAction() ] 
     } 
    ]); 
    }); 
}); 

回答

3

看起來像一個bug,所以我在這裏報道的那樣:crbug.com/408326

作爲變通,你可以通過添加以下清單文件使split incognito mode

"incognito": "split" 

不幸的是,chrome.runtime.onInstallednot fired for extensions in incognito mode,因此您應該避免在擴展程序以隱身模式運行時使用此事件,如下所示:

if (chrome.extension.inIncognitoContext) { 
    doReplaceRules(); 
} else { 
    chrome.runtime.onInstalled.addListener(doReplaceRules); 
} 
function doReplaceRules() { 
    chrome.declarativeContent.onPageChanged.removeRules(undefined, function() { 
    // ... add rules 
    }); 
} 
+0

要在哪個事件中將此代碼添加到page action的background.js文件中?即使你提交的bug是固定的,理論上你的解決方法已經不再需要了,但我注意到如果擴展名具有'「incognito」:「split」,並且該清單還包含一個'key'鍵(這是從Web Store下載的擴展),那麼declarativeContent不會應用到隱身環境。換句話說,如果您在本地加載擴展程序,則會啓用您的「無痕分裂」擴展程序圖標,如果您從網上商店下載擴展程序圖標,則不會啓用它。 – Pep 2017-08-15 17:02:06

+0

@Pep擴展程序默認情況下無法在隱身窗口中顯示。您是否爲您的分機啓用了隱身模式?我剛剛創建了一個crx文件(使用與第一個bug報告相同的擴展名,「incognito」更改爲「split」),加載了Chromium 60,安裝了crx,在Chrome擴展中啓用了隱身訪問功能,並打開了一個隱身窗口中的網頁。顯示頁面操作。然後,我通過devtools移除了body元素,並且按預期禁用了頁面操作(因爲如果存在''元素,擴展示例顯示了頁面操作)。 – 2017-08-15 17:17:14

+0

我能夠在我的擴展中重構一些東西,以便能夠使用''incognito「:」spanning「'而不是'」隱身「:」split「'。但爲了試圖理解分割模式的概念,我嘗試使用「隱身」創建測試擴展:「分割」。事實證明,使用測試擴展([代碼在這裏](https://github.com/pcondal/test-extension)),我沒有得到描述的原始行爲(即加載解包=圖標啓用,網上商店=圖標禁用)。相反,即使我在Chrome 60.0.3112.90上加載解壓後的擴展程序,現在我也無法在隱身模式下啓用頁面操作圖標。 – Pep 2017-08-15 21:54:11

相關問題