Javascript Google Chrome扩展:无法启动打印对话框

Javascript Google Chrome扩展:无法启动打印对话框,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,我想在我的谷歌浏览器扩展中点击按钮启动打印对话框。当扩展名的html文件作为独立文件打开时,代码似乎正常工作,但当它作为扩展名加载时,代码似乎不正常工作 HTML: JavaScript:函数print_p(){window.print();} 有什么问题吗?除了我提到的重复的内联JavaScript问题之外,似乎不可能从弹出窗口(或背景页面)调用打印对话框 一种解决方法是在扩展中有一个“打印助手”页面,该页面在普通选项卡中打开,并可以打开打印对话框 一种可能的架构: 单击弹出窗口,要打印的

我想在我的谷歌浏览器扩展中点击按钮启动打印对话框。当扩展名的html文件作为独立文件打开时,代码似乎正常工作,但当它作为扩展名加载时,代码似乎不正常工作

HTML:

JavaScript:
函数print_p(){window.print();}


有什么问题吗?

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

一种解决方法是在扩展中有一个“打印助手”页面,该页面在普通选项卡中打开,并可以打开打印对话框

一种可能的架构:

  • 单击弹出窗口,要打印的数据将发送到后台页面:

    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 helper页面中,脚本
    print.js
    请求数据,根据需要对其进行格式化,并调用打印对话框:

    chrome.runtime.sendMessage({ getPrintData: true }, function(response){
      formatDataIntoPage(response.data);
      window.print();
    });
    
  • 回到后台页面,根据print helper的请求提供数据:

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

  • @Xan的可能复制品:我已经试过了,但结果对我没有帮助。我还尝试了一种不同的方法,它同样适用于独立的html文件,而不是扩展名。下面是HTML:JS:function print_p(){window.print();}$(“#print_page”)。单击(function(){print_p();});你应该编辑你的问题,而不是评论;此外,内联代码用倒钩分隔,`。您的jQuery尝试仍然是错误的,除非您将其包装在
    $(document.ready({/*…*/})中@Xan:我会记住的。谢谢你的努力。但我也试过了。我开始怀疑chrome中的扩展是否不允许打印对话框访问。我刚刚测试了它,但它在弹出窗口中不起作用。在其他扩展页面上,它可以工作。那是你的案子吗?