Tapestry 5.4.5+printThis.js打印eventlink冗余URL问题求助
解决方案:移除Tapestry EventLink打印时的冗余URL
方案1:打印媒体查询CSS隐藏URL
浏览器默认会在打印时显示<a>标签的href值,通过CSS打印媒体查询可以针对性隐藏EventLink生成的链接URL:
@media print { /* 针对Tapestry EventLink生成的a标签(默认带t-event-link类) */ a.t-event-link::after { content: "" !important; } }
如果你的EventLink加了自定义类(比如<t:eventlink class="print-safe">),可以把选择器改成a.print-safe::after。
方案2:printThis预处理临时移除href
利用printThis的beforePrint和afterPrint回调,在打印前临时移除EventLink的href属性,打印后恢复,既保留内容又不显示URL:
// 假设你要打印的模态框内容容器是#modal-content $("#modal-content").printThis({ beforePrint: function() { // 保存原始href并移除 $(".t-event-link").each(function() { $(this).data("saved-href", $(this).attr("href")); $(this).removeAttr("href"); }); }, afterPrint: function() { // 恢复原始href $(".t-event-link").each(function() { $(this).attr("href", $(this).data("saved-href")); }); } });
方案3:调整EventLink的触发方式(仅适用于纯客户端模态框触发)
如果你的EventLink只是用来触发Bootstrap模态框,不需要服务端事件跳转,可以改用客户端触发方式,避免生成完整的事件URL:
<t:link onclick="$('#your-modal-id').modal('show'); return false;" class="your-style-class"> <!-- 这里放你的图片/文本内容 --> </t:link>
这种方式生成的链接不会带服务端事件的href,打印时自然不会出现冗余URL。
问题根源说明
Tapestry 5.4.5的<t:eventlink>会生成包含完整服务端事件路径的href属性,而浏览器打印时默认会在链接内容后追加显示该URL。之前5.3版本的jQuery dialogajaxlink可能生成的链接结构不同,或者浏览器打印行为的差异导致未出现此问题。
内容的提问来源于stack exchange,提问作者Spark43502
相关产品推荐
相关产品推荐

