我想在我的Google Chrome扩展程序中点击按钮启动打印对话框。当扩展程序的html文件作为独立文件打开时,代码似乎正在工作,但当它作为扩展名加载时则不行。
HTML:
<input id="print_page" type="button" value="Print" onclick="print_p()" />
JavaScript:function print_p(){ window.print();}
知道什么是错的?
答案 0 :(得分:2)
除了我提到的内联JavaScript问题,似乎从弹出窗口(或背景页面)调用打印对话框。
解决方法是拥有一个&#34;打印助手&#34;扩展程序中的页面,可在普通标签页中打开,并可打开打印对话框。
可能的架构:
在弹出窗口中单击时,要打印的数据将被发送到后台页面:
function printClick(){
chrome.runtime.sendMessage({ print: true, data: whateverYouWantToPrint });
}
它已经通过后台页面发送,因此您不必担心弹出窗口关闭。
在后台页面中,打开一个帮助页面:
var printData;
chrome.runtime.onMessage.addListener( function(request, sender, sendResponse){
if(request.print) {
printData = request.data;
chrome.tabs.create(
{ url: chrome.runtime.getURL("print.html") }
);
}
// ...
});
在打印助手页面中,脚本print.js
请求数据,根据需要对其进行格式化并调用打印对话框:
chrome.runtime.sendMessage({ getPrintData: true }, function(response){
formatDataIntoPage(response.data);
window.print();
});
返回后台页面,根据打印助手的请求提供数据:
chrome.runtime.onMessage.addListener( function(request, sender, sendResponse){
// ...
if(request.getPrintData) {
sendResponse({ data: printData });
}
});