我对 CSS 编码比对 Javascript 更熟悉,所以当我的任务是找到一种在打印期间而不是在屏幕上显示链接 URL 的方法时,我遇到了一些麻烦。使用 CSS,我可以很好地管理我想要的东西,但是由于 Internet Explorer 的古怪,我不得不找到一个 javascript 解决方案来解决我的问题。
我能够使用此代码解决我的困境,使链接 URL 在打印时显示,然后在打印预览关闭时从页面上消失。
window.onbeforeprint = function(){
var links = document.getElementsByTagName("a");
for (var i=0; i< links.length; i++){
var theContent = links[i].getAttribute("href");
if (!theContent == ""){
links[i].newContent = " [" + theContent + "] ";
links[i].innerHTML = links[i].innerHTML + links[i].newContent;
}
}
}
window.onafterprint = function(){
var links = document.getElementsByTagName("a");
for (var i=0; i< links.length; i++){
var theContent = links[i].innerHTML;
if (!theContent == ""){
var theBracket = theContent.indexOf(links[i].newContent);
var newContent = theContent.substring(0, theBracket);
links[i].innerHTML = newContent;
}
}
}
但是,现在我的问题变成了打印所有页面链接 URL。但是,很明显,我不需要打印内部导航 URL 之类的东西。这只会让成品看起来很乱。有没有办法从 javascript 的 onbeforeprint/onafterprint 函数中排除页面的某些部分,例如 ID 为Navigation的 UL 列表?