首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery打印预览

jQuery打印预览
EN

Stack Overflow用户
提问于 2012-07-07 23:25:18
回答 2查看 16.8K关注 0票数 2

我试图将jQuery打印预览插件添加到我的网站,但我使用AddThis的打印选项。我不确定是否有方法为我添加打印预览插件使用AddThis。有办法吗?

这是我的代码:

JS:

代码语言:javascript
复制
var $j = jQuery.noConflict();
   $j(document).ready(function() {
    $j('a.print-preview').printPreview();
});

AddThis代码:

代码语言:javascript
复制
<!-- AddThis Peekaboo Toolbox : BEGIN -->
<div class="addthis_toolbox addthis_peekaboo_style 
 addthis_default_style addthis_label_style addthis_32x32_style">
<a class="addthis_button_more">Share</a>
<ul>
<li><a class="addthis_button_facebook"></a></li>
<li><a class="addthis_button_twitter"></a></li>
<li><a class="addthis_button_google_plusone_share"></a></li>
<li><a class="addthis_button_email"></a></li>
<li><a class="addthis_button_print print-preview"></a></li>
</ul>
</div>
<!-- AddThis Peekaboo Toolbox : END -->
<script type="text/javascript" src="https://s7.addthis.com/js/
   300/addthis_widget.js"></script>

当我单击“打印”时,它会弹出Firefox中的“标准打印”对话框(或我使用的任何浏览器)。

我有一种感觉,AddThis JS正在使用类似于JavaScript:window.print();的东西来触发打印对话框,从而绕过了jQuery打印预览插件。是否有一种简单的方法可以更改AddThis行为以触发打印预览?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-08 17:11:13

通过删除类并添加自己的类,我能够更改AddThis打印按钮的行为。以下是代码:

原始AddThis代码:

代码语言:javascript
复制
<!-- AddThis Peekaboo Toolbox : BEGIN -->
<div class="addthis_toolbox addthis_peekaboo_style 
  addthis_default_style addthis_label_style addthis_32x32_style">
<a class="addthis_button_more">Share</a>
<ul>
<li><a class="addthis_button_facebook"></a></li>
<li><a class="addthis_button_twitter"></a></li>
<li><a class="addthis_button_google_plusone_share"></a></li>
<li><a class="addthis_button_email"></a></li>
<li><a class="addthis_button_print"></a></li>
</ul>
</div>
<!-- AddThis Peekaboo Toolbox : END -->
<script type="text/javascript" src="https://s7.addthis.com/js/300/
  addthis_widget.js"></script>

页面上显示的AddThis代码:

代码语言:javascript
复制
<div class="addthis_toolbox addthis_peekaboo_style 
   addthis_default_style addthis_label_style addthis_32x32_style">
<!-- Omited code not relevant to print function. --> 
<ul style="display: none;"> <!-- Changes to Display Block on Hover --> 
<!-- Omited code not relevant to print function. --> 
 <li>
  <a class="addthis_button_print at300b" title="Print" href="#">
  <span class=" at300bs at15nc at15t_print"></span>
      Print
   </a>
 </li>
</ul>

编辑代码以更改打印函数并调用打印预览插件:

代码语言:javascript
复制
<div class="addthis_toolbox addthis_peekaboo_style 
   addthis_default_style addthis_label_style addthis_32x32_style">
<!-- Omited code not relevant to print function. --> 
<ul style="display: none;"> <!-- Changes to Display Block on Hover --> 
<!-- Omited code not relevant to print function. --> 
 <li>
  <a class="print-preview at-print">
   <span class="at-print-span"></span>
       Print
   </a>
 </li>
</ul>

要正确显示打印的CSS:

代码语言:javascript
复制
.at-print {
  padding: 0 2px;
  float: left;
  padding: 10px 20px !important;
  text-decoration: none;
  text-overflow: ellipsis;
  white-space: nowrap;
}


.at-print-span {
  background-position: 0 -576px !important;
  background: url("//s7.addthis.com/static/r07/widget006_32x32_top.png") 
              no-repeat scroll left center transparent;
  display: block;
  height: 32px !important;
  line-height: 32px !important;
  overflow: hidden;
  width: 32px !important;
 float: left;
}

我不确定所有的CSS都是必需的,但它确实有效。

重要注意事项:

这就是如何更改打印按钮功能,以便我可以调用jQuery打印预览函数。但是,当同时使用AddThis脚本和打印预览插件时,您会抛出一个错误。必须修改打印预览。

下面是第44行必须完成的工作,您将看到以下代码:

代码语言:javascript
复制
// The frame lives
        for (var i=0; i < window.frames.length; i++) {
            if (window.frames[i].name == "print-frame") {
                var print_frame_ref = window.frames[i].document;
                break;
            }
        }

将上述代码替换为:

代码语言:javascript
复制
print_frame_ref = print_frame[0].contentWindow.document;

问题解决了。

票数 2
EN

Stack Overflow用户

发布于 2012-07-07 23:31:03

有两种选择。一种是添加带有打印图标的自定义服务,而不是使用打印API。

http://support.addthis.com/customer/portal/articles/381245-custom-services

还有一个内置在API中的印刷友好型 API:

http://www.addthis.com/services/list

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11379461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档