2010-06-24 63 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); 
            }); 
相关问题