Google Chrome扩展程序 - 自动创建和删除标签

时间:2010-06-24 18:46:56

标签: javascript google-chrome google-chrome-extension

我正在创建一个扩展程序,它将根据突出显示的文本启动外部脚本。所以,到目前为止,脚本仍然有效,除非我在关闭新创建的窗口时遇到问题。

在我的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行),它会打开选​​项卡并完美地运行脚本。我试图让语法在执行后自动关闭标签。

谢谢!

3 个答案:

答案 0 :(得分:1)

不完全确定您要完成的操作,但如果您想在脚本运行后关闭标签页,则应该让脚本使用chrome.extension.sendRequest向background.html发送“关闭我”请求。< / p>

使用chrome.tabs.executeScript可能会更好,它允许您传递一个在脚本运行完毕后调用的函数(可以在其中关闭选项卡)。

答案 1 :(得分:1)

我想在此问题上发布一个后续问题:

我想制作一个Chrome扩展程序,它将给定标签的URL(最终选定的文本)传递给我的程序(在OS X中)。

问题是Chrome在打开标签后立即关闭标签,并且没有真正加载网址。实现这一目标的唯一方法是插入alert-command,这是不可行的。

我也尝试了

  

chrome.tabs.onCreated.addListener

但结果相同,而且setTimeout似乎根本没有注册。

我的代码:

  

chrome.browserAction.onClicked.addListener(函数(制表符)   {         chrome.tabs.create({URL: “对myApp:添加URL =” + encodeURIComponent方法(tab.url)},   函数(制表符){                 alert(“您的URL已添加到myApp”);         chrome.tabs.remove(tab.id);         });   });

我需要完全相同的结果,只有没有警报框....谢谢你的帮助!

答案 2 :(得分:1)

这对我有用:

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