【问题标题】:how to remove href for "printing" html to PDF?如何删除“打印”html到PDF的href?
【发布时间】:2014-06-19 11:01:47
【问题描述】:

我构建 HTML 页面,我想让用户“打印”HTML 到 PDF,而不嵌入 HREF 链接(因为它们链接到内部服务器,我不希望 PDF 的读者看到这些链接)。

在 Chromium 中,生成的 PDF 文件会嵌入 href 链接。

是否可以通过 Javascript 的 CSS 删除 href?

我试过了:

<a class="no_print" href="javascript:printPreview()">Print Preview</a>

<script>
function printPreview() {
    var aTags = document.getElementsByTagName('a');
    var atl = aTags.length;
    var i;

    for (i = 0; i < atl; i++) {
        aTags[i].href = ''; 
    }
}
</script>

但它不起作用。

--编辑:找到解决方案后,这里有一个完整的例子--

<!DOCTYPE html>
<html><header>
    <title>x</title>
    <style>
        @media print { .no_print { display: none; }
    </style>
    <script>
function printPreview()
{
    var aTags = document.getElementsByTagName('a');
    var atl = aTags.length;
    var i;

    for (i = 0; i < atl; i++) {
        aTags[i].removeAttribute("href");   
    }
}
    </script>

</head>
<body>
    <a class="no_print" href="javascript:printPreview()">Print Preview</a>
    <br>
    <a href="http://example.com">link to somewhere</a>
    <br>
    <a>anchor but no link</a>
    <br>
    other text...
</body>
</html>

【问题讨论】:

  • 把你的.no_print css 类放在@media print { ... }
  • 应该是function printPreview()
  • 是的,在你的 CSS 中使用 @media print { .no_print { display: none; } }。不要为此使用 javascript。
  • 因为它们链接到内部服务器。他们在必须点击打印预览的实际网站上看不到它吗?

标签: javascript html css


【解决方案1】:

你可以在JS下面试试

 function printPreview() {
    document.getElementsByTagName('body a').each(function(index, element) {
     element.removeAttribute('href');
    });
}

以上代码将删除正文中所有锚点的 href 属性。

【讨论】:

    【解决方案2】:

    这是运行良好的代码。

    <html>
      <a class="no_print" href="javascript:printPreview()">Print Preview</a>
    
      <script>
      function printPreview() {
         var aTags = document.getElementsByTagName('a');
         var atl = aTags.length;
         var i;
    
         for (i = 0; i < atl; i++) {
            **aTags[i].removeAttribute("href");**
         }  
      }
      </script>    
    </html>
    

    【讨论】:

      【解决方案3】:

      试试看。可能是这样?

      HTML

      <a class="no_print" href="javascript:printPreview">Print Preview</a>
      

      JS

      function printPreview() {
          document.getElementsByTagName('a').removeAttribute("href");
      }
      

      【讨论】:

      • 您的回答促使我找到了解决方案,但 user3752326 回答得更准确
      【解决方案4】:

      纯css解决方案:

      @media print {
          a:after {
              display: none !important;
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2017-12-16
        • 2014-04-04
        • 1970-01-01
        • 1970-01-01
        • 2011-05-27
        • 2011-11-10
        • 2021-12-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多