不错的用外部Javascript修正特定网页内容
这段代码算是自己练手帮助别人解决的一个问题写的。
要求是这样的:
<a href="window.open('','')">test</a>,这个不能变,只可以在外面做事情,那要如何呢?
要求点击上面的连接,打开一新页面,并在原页面进行其他操作。
分析可知:上面打开新页面的写法本身就是错误的,根本无法打开新页面。正确的写法应该是:
<a href="javascript:void(0)" onclick="window.open('','')">test</a>
于是解决办法就是用外部js修改连接的内容。首先要判断那个链接内部的href属性包含“window.open”,然后为其增加onclick属性,并将href内容赋给它。然后修改href属性内容。
但解决过程中发现一个问题,读取href属性内容时不能得到其实际内容,而是网页的url路径(去除最后的页面文件名)+href内容,还要把前面的url路径去掉。这个可以用substring()结合indexOf()解决。
至于在原页面些内容就简单多了。
根据分析写了如下测试代码,实现了上面的要求:
function addEvent(elm,evType,fn,useCapture){
if(elm.addEventListener){
elm.addEventListener(evType,fn,useCapture);
return true;
}else if(elm.attachEvent){
var r=elm.attachEvent("on"+evType,fn);
return r;
}else{
alert("Handler could not be removed");
}
}
function doOther(){
if(event.srcElement.tagName=="A"&& event.srcElement.getAttribute("href").indexOf("window.open")!=-1){
event.srcElement.setAttribute("onclick",eval(event.srcElement.href.substring(event.srcElement.href.lastIndexOf("/")+1,event.srcElement.href.length)));
event.srcElement.setAttribute("href","javascript:void(0)");
document.getElementById("test").innerHTML="是不是这样子?"
}
}
addEvent(document,"click",doOther);
test ,这个不能变,只可以在外面做事情,那要如何呢?
[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]