【发布时间】:2012-10-20 11:21:09
【问题描述】:
我知道没有办法做到这一点,但有一种方法可以专门针对我的任务。当我打开超过 30 个标签时,我想尽快在内容脚本中执行 window.stop() 命令,以加快 google chrome 启动速度。通常我会从内容脚本向 background.html 发送一个请求,以查找当前选项卡是否处于非活动状态,等待响应然后执行 window.stop()。但这是一个坏主意,因为当同时加载 30 个选项卡时,响应需要很长时间才能响应。所以我需要一个同步回调来在内容脚本被激活后立即停止页面。所以我想出了这个解决方案。在 background.html 我这样做
chrome.tabs.getAllInWindow(null,
function(tabs)
{ tabs.forEach(
function(tab)
{ //check if tab is active
//if it's not do chrome.tabs.update(tab.id, {url: "modified_url", selected: tab.selected})
})
})
我尝试了两种修改url的方法
1: google.com => google.com//
2: google.com => google.com???
当内容脚本检查 window.location.href 并找到双斜杠或三问号时,它会执行 window.stop()
所以 chrome 在加载时让我没有时间死去 :)
但这种方式并不完美。很多页面会自动更正此类 url。当然,这很粗鲁。
所以也许还有另一种方法可以使用 background.html 对选项卡执行某些操作,以便内容脚本知道它以避免消息传递?
【问题讨论】:
-
我尝试使用 // 和 ???同时,似乎那些对其网址进行更正的页面仍然没有这样做。
-
哦,不,youtube 不适合这个网址挑逗
-
也尝试了这个技巧:将 url 更改为
"about:blank->http://google.com"似乎 content_script 在此类页面上不起作用并且也执行脚本。 -
也尝试了这个技巧:将 url 更改为
file:///C:/tmp/1.htm?http://google.com想法是通过 XMLHttpRequest 通过内容脚本获取 favicon,结果:NETWORK_ERR: XMLHttpRequest Exception 101。这是正常的,也是克服 start chrome 的唯一方法特殊参数(类似于允许文件读取文件...) -
发现一个关于我的案例的问题,点击一个星来帮助我
http://code.google.com/p/chromium/issues/detail?id=54257plee:)eease
标签: javascript google-chrome-extension