Javascript窗口写回调
Javascript window write callback
是否有一种方法可以让父窗口知道子窗口何时加载了它的内容?子脚本中没有任何脚本。
下面是我当前的代码:
var printWindow = window.open('', '_blank');
printWindow.document.write(clonedElement.html());
printWindow.onreadystatechage = function() {
console.log('this does not work.');
};
你有相同的事件在window
上触发,所以你可以得到加载事件,如果你打开的页面已经有html,例如
var b = new Blob([clonedElement.html()], {type: 'text/html'}),
uri = URL.createObjectURL(b),
printWindow;
printWindow = window.open(uri, '_blank');
printWindow.addEventListener('load', function () {
URL.revokeObjectURL(uri); // release these
b = null; // from memory
// do something else
});
请注意,这里会有一个竞态条件(尽管你几乎总是会赢得它,即如果页面加载并且事件在打开和添加侦听器之间触发)
或者,不使用
var b = new Blob([clonedElement.html()], {type: 'text/html'}),
uri = URL.createObjectURL(b),
printWindow = window.open('', '_blank');
printWindow.addEventListener('load', function () {
URL.revokeObjectURL(uri); // release these
b = null; // from memory
// do something else
});
printWindow.location = uri;
看来您可能面临跨域策略问题。父页面和子页面必须托管在同一域中。浏览器,比如chrome,不允许它,而FF在某些情况下可以更宽松。你应该看看"启用CORS",这个链接也会对你有所帮助:等待子窗口加载完成
相关文章:
- AngularJS:我可以跳过函数参数回调吗
- 要求未定义JS回调参数
- MeteorJS:在带有回调的vzaar api上正确使用wrapAsync
- 自引用回调
- 测试Angular Service解决错误回调中的promise
- 如何将一个JavaScript函数回调为多个函数
- JavaScript回调函数
- 用于回调的javascript参数
- 将json回调数据转换为日期
- 承诺在非节点式回调上使用Bluebird
- 如何在回调函数中执行流
- 回调函数中传递参数的困难(Google Map API Markers)
- 写问题需要回调-Mongoose+Node.js
- 文档.写jsonp回调
- 写html到元素的回调
- 为什么被迭代的对象要通过回调传递回
- 回调高于回调
- Javascript窗口写回调
- jQuery创建一个不是回调的回调
- 我怎么能写一个函数接受回调函数,并在'安全'道路