Chrome window.print() различия между стабильной и Dev вызывает проблемы
У меня есть следующий код в расширении 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. Я заметил в dev-версии Chrome (38.0.2101.0 dev-m), что вкладка не закрывается, если нет действий пользователя, чего я и хочу, однако в стабильной версии (36.0.1985.125 m) вкладка сразу закрывается при открытии. Это как если бы javascript:window.print()
завершает работу в стабильной версии, но не в dev.
На связанной ноте, я должен использовать chrome.tabs.update
закрыть вкладку или chrome.tabs.remove
?
Большое спасибо за любую помощь, которую вы можете предоставить.
2 ответа
Решено. Уволил chrome.tabs.update
событие в javascript:window.print()
только после вкладки status
было complete
,
Может быть, вы должны использовать другой подход.. Выполнение JavaScript через javascript:
URL-адреса очень окольный путь.
Вместо этого вы можете внедрить эту команду в качестве скрипта содержимого и использовать run_at
параметр.
chrome.tabs.executeScript(
newTab.id,
{
code: "window.addEventListener('load', function(){ window.print() })",
run_at: "document_end"
},
doAftermath
);
Не есть document_end
ресурсы, подобные изображениям, еще не загружены. Вот почему вы должны слушать window.onload
, Впрыскивать в document_end
гарантирует, что скрипт будет запущен до того, как это событие будет запущено.