关于子窗口 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

你可能感兴趣的:(关于子窗口 onload 事件)