2016-01-05 113 views
0

我想要做的是在Chrome每次啓動時打開一個新標籤頁(chrome:// newtab)。 我的JavaScript代碼是工作的罰款:Chrome擴展程序:啓動時打開新標籤頁

chrome.tabs.create({}); 

每次執行腳本的新標籤頁中打開,重點和光標放在地址欄中。問題是,代碼並不總是被執行 - 只有在Chrome啓動之前沒有運行Chrome進程。

我的第二種方法是創建一個事件偵聽器,因此一旦執行chrome就知道在啓動時要做什麼。我試過使用這個腳本:

chrome.windows.onCreated.addListener(function (Window window) { 
    chrome.tabs.create({}); 
}); 

但是這並沒有奏效。

我的清單看起來像這樣:

{ 
    "manifest_version": 2, 
    ... 
    "background": { 
    "scripts": ["newtab.js"], 
    "persistent": false 
    } 
} 

... 因此,這將是實現這一正確的方式?

+0

當你說「只有在沒有鍍鉻工藝鍍鉻前運行啓動」你的意思是當已經有一個鍍鉻的窗口中打開它不工作,你就會開始一個新的? – Pabs123

+0

只在清單中使用第一個方法和'「persistent」:true',並且使用taskkill殺死所有打開的chrome進程打開了一個新選項卡。再次關閉和打開鍍鉻(通常)沒有。 – Frank

回答

1

function (Window window) {是無效的語法。

chrome.windows.onCreated.addListener(function() { chrome.tabs.create({}) })將改爲工作。

但是,這可能不是你想要的,因爲當使用菜單 - >新窗口創建新窗口時,這將導致新的選項卡。

您可以通過檢查最新打開的窗口是唯一的窗口來解決這個問題。

chrome.windows.onCreated.addListener(function() { 
chrome.windows.getAll(function(windows) { 
    if(windows.length == 1) { 
    chrome.tabs.create({}) 
} }) })` 
+0

謝謝,我明白了。不,這不是我想要的,而是我的第一步。我現在使用此代碼: 'chrome.windows.onCreated.addListener(函數(窗){ \t chrome.tabs.getAllInWindow(window.id,函數(製表符){​​ \t \t如果(製表符[tabs.length- 1] .pinned){ \t \t \t chrome.tabs.create({}); \t \t} \t}); });' ,其完全適用於我。 – Frank

相關問題