Google Chrome扩展程序:无法启动“打印”对话框

时间:2014-06-12 17:34:09

标签: javascript google-chrome google-chrome-extension

我想在我的Google Chrome扩展程序中点击按钮启动打印对话框。当扩展程序的html文件作为独立文件打开时,代码似乎正在工作,但当它作为扩展名加载时则不行。

HTML: <input id="print_page" type="button" value="Print" onclick="print_p()" />

JavaScript:function print_p(){ window.print();}

知道什么是错的?

1 个答案:

答案 0 :(得分:2)

除了我提到的内联JavaScript问题,似乎从弹出窗口(或背景页面)调用打印对话框

解决方法是拥有一个&#34;打印助手&#34;扩展程序中的页面,可在普通标签页中打开,并可打开打印对话框。

可能的架构:

  1. 在弹出窗口中单击时,要打印的数据将被发送到后台页面:

    function printClick(){
      chrome.runtime.sendMessage({ print: true, data: whateverYouWantToPrint });
    }
    

    它已经通过后台页面发送,因此您不必担心弹出窗口关闭。

  2. 在后台页面中,打开一个帮助页面:

    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") }
        );
      }
      // ...
    });
    
  3. 在打印助手页面中,脚本print.js请求数据,根据需要对其进行格式化并调用打印对话框:

    chrome.runtime.sendMessage({ getPrintData: true }, function(response){
      formatDataIntoPage(response.data);
      window.print();
    });
    
  4. 返回后台页面,根据打印助手的请求提供数据:

    chrome.runtime.onMessage.addListener( function(request, sender, sendResponse){
      // ...
      if(request.getPrintData) {
        sendResponse({ data: printData });
      }
    });