一个使用外部Javascript修正特定网页内容的方法
这段代码算是本人练手帮助别人搞定的一个标题写的。
要求是这样的:
<ahref="window.open('','')">test</a>
这个不可以变,只可以正在外面办事情,那要怎么办呢?
要求点击后面的连接,打开一新页面,并正在原页面举办其他操作。
分析可知:后面打开新页面的写法本人便是过失的,底子没法打开新页面。准确的写法应该是:
<ahref="javascript:void(0)"onclick="window.open('','')">test</a>
因此搞定办法便是用内部js修改连接的内容。先要确定哪个链接内部的href属性包含“window.open”,然后为其增加onclick属性,并将href内容赋给它。然后修改href属性内容。
但搞定过程中看见一个标题,读取href属性内容时不克不及取得其实践内容,而是网页的url路径(去除了最后的页面文件名)+href内容,还要把后面的url去掉。这个可以用substring()分别indexOf()搞定。
至于正在原页面些内容就庞杂多了。
遵照分析写了以下测试代码,实现了后面的要求:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns ="http://www.w3.org/1999/xhtml" xml:lang ="en" lang ="en">
<head>
<title></title>
<script type ="text/javascript">
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="<font color=#ff0000><b>能否是这容貌?</b></font>"
}
}
addEvent(document,"click",doOther);
</script>
</head>
<body>
test
<div id="test"></div>
</body>
</html>