我正在制作用于打印IFrame的Opera解决方法。现在我们都知道打印iframe的唯一方法是在新窗口中打开然后打印它。我面临的问题是,当我的IFrame在新窗口中打开时,会触发一系列的ajax调用,并且我想在完成所有ajax调用时打开打印窗口。我搜索了一下,发现了全局回调事件ajaxComplete。我的代码是这样的:
if($.browser.opera){
var href = $("iframe:visible")[0].contentWindow.location.href;
var printWindow = window.open(href, "printWindow", "scrollbars=yes");
printWindow.onload = function(){
$(this.document.getElementsByClassName("f-buttons")).hide();
$(this.document.getElementsByClassName("f-progress")).hide();
}
$(printWindow.document.body).ajaxComplete(function( event, xhr, settings ){
printWindow.print();
});
$(printWindow).ajaxComplete(function( event, xhr, settings ){
printWindow.print();
});
}
我不确定为什么事件一开始没有被触发我在文档上尝试了它,因为ajaxComplete的文档显示它应该只附加到文档但有些人在这里建议它也可以附加在正文上所以我也尝试了这个,但它没有初始化。谁能告诉我我错过了什么?
答案 0 :(得分:2)
来自jQuery文档,第1名:
从jQuery 1.8开始,只应附加.ajaxComplete()方法 记录。
和第二名:
如果在全局选项设置为的情况下调用$ .ajax()或$ .ajaxSetup() false,.ajaxComplete()方法不会触发。
我不知道你是如何调用AJAX的,但是我可以看到你将ajaxComplete方法附加到'body'而不是文档所说的'document'。
尝试这些,让我知道发生了什么。