博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ajax加载数据到页面无法打印的解决办法
阅读量:6589 次
发布时间:2019-06-24

本文共 1000 字,大约阅读时间需要 3 分钟。

hot3.png

        今天,弄一个打印页面的功能大致的原理想法是,ajax加载页面到当前的一个隐藏iframe里面,然后打印iframe,为了兼容所有的浏览器,只好舍弃预览功能,使用print()方法打印。可是试了好几遍,每次打印都是空白啊。具体的代码如下

function XmlPostprint(){	var result='';	$.ajax({		url:"test222.html",		success:function(data){			var doc=$("iframe#flyso")[0].contentWindow.document;			doc.write(data);			doc.close();		}	});}function prints(){	XmlPostprint();		var ss=document.getElementById("flyso");		ss.contentWindow.close();		ss.contentWindow.focus();		ss.contentWindow.print();}

        之后无意中一次点击了两次打印按钮,突然发现竟然又可以打印了。才恍然大悟,jquery的ajax默认是异步加载的,也就是说prints()方法中的XmlPostprint()方法尚未完成,就直接执行下面的js语句了。解决方法就是jquery的ajax添加上async:false的属性,修改后的XmlPostprint()如下:

function XmlPostprint(){	var result='';	$.ajax({		url:"test222.html",		async:false,		success:function(data){			var doc=$("iframe#flyso")[0].contentWindow.document;			doc.write(data);			doc.close();		}	});}

注:contentWindow是用于获取iframe框架的window对象。本想用contentDocument,但此属性兼容性不好。再者,非常感谢jquery插件printArea的作者,许多想法都看了插件的源代码才实现,万分感谢

转载于:https://my.oschina.net/ivanfjz/blog/80019

你可能感兴趣的文章
七、MySQL中的字符集 - 系统的撸一遍MySQL
查看>>
centos7的php5.4竟然不支持原生的mysql
查看>>
使用IntelliJ IDEA开发SpringMVC网站(四)用户管理
查看>>
Maven依赖Scope标签用法
查看>>
ajax加载数据到页面无法打印的解决办法
查看>>
js 验证中文
查看>>
Linux下运行java DES AES加解密
查看>>
DataNode 运行状况
查看>>
牛津词典 2018 年度词汇 ——「有毒」!
查看>>
XIB的是用
查看>>
Learning Data Structure_2_线性表、栈和队列
查看>>
Android Arcface人脸识别sdk使用工具类
查看>>
android studio单个工程文件的代理设置
查看>>
Agent admitted failure to sign using the key
查看>>
grep 应用
查看>>
我的友情链接
查看>>
Linux实验室 CentOS关机大法
查看>>
一行命令获取当前JVM所有可设置的参数以及当前默认值
查看>>
spring与struts2 mvc共存web.xml简单配置
查看>>
Python web爬虫
查看>>