我在我写的Chrome扩展程序中有以下代码:
chrome.tabs.update(newTab.id, {url: "javascript:window.print()"}, doAftermath);
} //End of a function
<snip!>
//Do nothing upon errors
function doAftermath(){
if(chrome.runtime.lastError){
//If the user doesn't Print or Cancel, but closes the
//tab,
// - OR -
//If the original tab the user was on is now missing
//
//...ignore any errors
return;
}else{
chrome.tabs.update(newTab.id, {url: "javascript:window.close()"}, doAftermath);
}
} //doAftermath
我有一些机器,都使用相同的操作系统:Windows 7 HP SP1 x64。我注意到Chrome的开发版本(38.0.2101.0 dev-m),除非用户操作,否则选项卡不会关闭,这是我想要的,但是在稳定版本(36.0.1985.125 m)上,选项卡会在打开时立即关闭。好像javascript:window.print()
在稳定版本上完成,但在开发时没有。
在相关说明中,我应该使用chrome.tabs.update
关闭标签页还是chrome.tabs.remove
?
非常感谢您提供的任何帮助。
答案 0 :(得分:0)
解决。仅在chrome.tabs.update
标签为javascript:window.print()
之后才将status
事件发送至complete
。
答案 1 :(得分:0)
也许你应该采取另一种方法..通过javascript:
网址执行JavaScript是一种非常迂回的方式。
相反,您可以inject this command as a content script,并使用run_at
parameter。
chrome.tabs.executeScript(
newTab.id,
{
code: "window.addEventListener('load', function(){ window.print() })",
run_at: "document_end"
},
doAftermath
);
注意:在document_end
,图像等资源尚未加载。这就是你应该听window.onload
的原因。在document_end
处注入可以保证脚本在该事件被触发之前运行。