Django打印a标签href对应文本时如何去除附带的完整URL?
问题原因
你当前代码里的CSS规则主动为所有带printable类的<a>标签的未访问、已访问状态追加了后缀内容,通过content:" [" attr(href) "] "把链接地址拼到了文本后方,这是打印时出现额外URL的根本原因。
解决方案
- 方案1:完全不需要所有
printable类a标签显示链接后缀
直接删除如下CSS代码段即可:
a.printable:link:after, a.printable:visited:after { content:" [" attr(href) "] "; }
- 方案2:仅打印时隐藏链接后缀,正常浏览页面时保留
新增打印媒体查询的覆盖样式:
@media print { a.printable:link:after, a.printable:visited:after { content: none !important; } }
- 方案3:仅当前这个「Accept this Order」的a标签不需要显示后缀,其余
printable类a标签保留原有逻辑
给当前a标签新增专属类名,比如no-print-href,修改后的a标签代码如下:
<a href="{{ request.scheme|safe|escape }}://{{ request.get_host }}/crm/orders/accepting/{{client.id}}/{{invoice.id}}/" class="printable no-print-href" style="color:#fff; text-decoration:none;">Accept this Order</a>
再新增对应CSS规则:
a.no-print-href:link:after, a.no-print-href:visited:after { content: none !important; }
如果修改后部分浏览器打印仍出现URL,是浏览器默认打印样式导致的,新增全局打印覆盖规则即可:
@media print { a:link:after, a:visited:after { content: none !important; } }
内容的提问来源于stack exchange,提问作者VEERA BABU
相关产品推荐
相关产品推荐

