关于子窗口 onload 事件

写几篇简书,先从一个简单问题开始,这问题与导出为 PDF 相关,但是 htmltopdf 这个工具在我电脑上不可用,所以我果断放弃了使用 pdfkit。偶然间我发现 Chromium 下右键再 print... 可以保存为 PDF 并且导出样式也基本一致。但是这样又引发了一个新问题:
例如这样,导出的 js 代码只一行,自己去点击 save 按钮来保存。

function ExportToPDF () {
  window.open(window.location.href.replace(/#.*?$/, '') + '/export_to_pdf');
}

如何在子窗口的 onload 事件上加动作,例如我想等子窗口加载完毕,去点击一个按钮,然后再调用子窗口的 print。否则有些东西被隐藏,打印出来无意义。
这问题各种方法尝试了很多,最终都没有达到想要的效果,一句一句在 console 下执行都没有问题,写代码中去都没有反映了。最终的一般化方法并没有找到,现在也只是根据这个特例来专门解决,想打印的页面和当前的页面区别只是有没有 layout 和是否点击显示全部的按钮,其实一切动作都当成是一个页面就好了,通过 url 区分一下就可以了。

window.onload = function() {
  // ...
  if (window.location.href.match(/export_to_pdf$/)) {
    document.getElementById('show_hide_all_button').click();
    window.print();
  }
}


function ExportToPDF () {
  window.open(window.location.href.replace(/#.*?$/, '') + '/export_to_pdf');
}

最后 export_to_pdf 的路由应该是这样:

      get :export_to_pdf, on: :member
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容