附加样式表链接,用于打印触发jQuery的click()事件
Append stylesheet link for printing triggered on jQuery click() event
我在头部部分有一个css链接,具有media='screen'
属性,然后我想动态链接具有media='print'
属性的其他css文件。
,我这样做的解决方案。
$("div#alert").click(function(){
$('head')
.append("<link rel='stylesheet' href='css/alert.css' media='print' />");
window.print();
});
但. .当我运行这段代码时,输出只是基于media='screen'
css。
然后我用相同的代码再次尝试,我单击div元素,当打印对话框出现时,我单击取消按钮,然后我再次单击div元素。然后点击确定按钮这次…media='print'
在工作…那么我该怎么处理window.print()
呢?
也许你调用window.print()太早了(在打印样式表下载之前)-试试这个:
$("div#alert").click(function(){
$('head')
.append("<link rel='stylesheet' href='css/alert.css' media='print' />");
setTimeout(function() {
window.print();
}, 1000);
});
更优雅的解决方案是异步加载样式表,将其插入头部,然后在AJAX请求的回调中调用print()函数。
您可以这样使用$.get
和success callback
:
$("div#alert").click(function(){
$.get('css/alert.css', function (response) {
$('head')
.append("<style rel='stylesheet' media='print'></style>")
.html(response);
}).success(function () {
window.print();
});
});
看起来你的javascript函数正在运行,不允许浏览器更新CSS。
观看这个视频,它解释了javascript中的事件循环是如何工作的。这也意味着如果你的循环运行缓慢并且阻塞了浏览器,你可以在超时时间内将它们分开。
我的建议是像Alex所说的那样,将.print
设置为超时
相关文章:
- jQuery:.click(function(){(element),collapse('show',f
- 具有相同类的jquery-click元素
- 使用Jquery.click显示/隐藏切换,适用于新用户,但不适用于种子
- iframe中的jquery-click元素
- jQuery-click函数不适用于使用innerHTML动态生成的按钮
- addEventListener 在 Javascript 中不起作用,但 jQuery Click 正在工作
- 将参数传递给 jQuery .click WHILE 保留事件参数
- jQuery:click() 执行而不是绑定
- JQuery Click on Table
- jQuery Click Event 不适用于 Angular.js NG-repeat
- SVG 对象部分上的 JQuery click() 不一致
- 防止Jquery.click切换函数因过度点击而反复运行
- JQuery.click,nor.on(“click”,..)与使用函数创建的ASP.NET和twitter boost
- jQuery.click()赢得't从<a>在splash.js模板中
- jQuery.click();不要对特定的元素开火
- Jquery.click阻止默认onClick
- 如何获取从jQuery click()函数调用的特定于标记的自定义Javascript函数
- jQuery click()多次输出错误按钮的信息
- jquery.click()在Ajax 403响应后不起作用
- jQuery .click 在动态加载按钮上不起作用