2010-06-24 93 views
1

我正在創建一個擴展程序,該擴展程序將基於高亮顯示的文本啓動外部腳本。所以,目前爲止,該腳本的作品,除了我有關閉新創建的窗口的問題。谷歌瀏覽器擴展程序 - 自動創建並刪除標籤

在我background.html,我有以下幾點:

<script> 
function executeScript(selection) { 
    var queryText = 'script:' + selectedText; 
    chrome.tabs.create({url: queryText}); 
    chrome.tabs.getSelected(null, function(tab) { 
    chrome.tabs.remove(tab.id); 
    }); 
} 
</script> 

我的問題是與上面設置的,它的「URL」加載之前關閉的標籤,所以它永遠不會執行腳本。

如果我拿出getSelected行(第5-7行),它會打開選​​項卡並完美地運行腳本。我試圖只是獲取語法來執行後自動關閉選項卡。

謝謝!

+0

我不知道肯定做,但你可能尋找某種'onLoad'事件。 – 2010-06-24 18:48:39

+0

是不是有沒有使用Javascript的'eval'函數直接在後臺頁面執行腳本而不是打開和關閉新標籤的原因? – Chetan 2010-06-24 19:41:47

+0

,因爲當url轉到腳本:foo時,它啓動並將變量foo傳遞給腳本。我正試圖完成與Chrome中的firefox插件相同的功能。 – Tribalcomm 2010-06-24 21:09:04

回答

1

不完全確定您要完成的操作,但是如果您想在腳本運行後關閉標籤,則應該使用chrome.extension.sendRequest發送「關閉我」請求至background.html。

使用chrome.tabs.executeScript可能會更好,它允許您傳遞腳本運行完畢後調用的函數(可以關閉該選項卡)。

+0

基本上,現在標籤閃爍,然後關閉,但我需要腳本等待,直到「script:foo」url加載... – Tribalcomm 2010-06-24 21:29:35

+0

什麼樣的URL是「script:foo」?你的意思是「javascript:foo」? – MooGoo 2010-06-24 23:06:51

+0

沒有。這是我註冊的自定義uri。如果你想看看我做了什麼,請參見http://www.google.com/support/forum/p/Chrome/thread?tid=2b67d52a2d974418&hl=zh_CN ... – Tribalcomm 2010-06-25 17:03:16

1

我想發佈一個後續問題這個問題:

我想打一個Chrome擴展,其通過對URL(最終選定的文本)給定的標籤,以我的程序(OS X )。

問題是,Chrome在打開標籤後立即關閉標籤,並沒有真正加載URL。實現這一點的唯一方法是插入alert-command,這是不切實際的。

我也

試過chrome.tabs.onCreated.addListener

但它是同樣的結果,和setTimeout的似乎並沒有在所有登記。

我的代碼:

chrome.browserAction.onClicked.addListener(函數(製表符) { chrome.tabs.create({URL: 「對myApp:添加URL =」 + encodeURIComponent方法(標籤。 ); 函數(標籤){ alert(「Your URL is added to myApp」); chrome.tabs.remove(tab.id); }); });

我會需要完全相同的結果,只有沒有警報框....感謝您的幫助!

1

這爲我工作:

chrome.tabs.create({ url: yourUrl },function(tab){ 
               setTimeout(function(){chrome.tabs.remove(tab.id);}, 200); 
            }); 
相關問題