不错的用外部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需刷新才能执行]

(0)

相关推荐

  • 不错的用外部Javascript修正特定网页内容

    这段代码算是自己练手帮助别人解决的一个问题写的. 要求是这样的: <a href="window.open('','')">test</a>,这个不能变,只可以在外面做事情,那要如何呢? 要求点击上面的连接,打开一新页面,并在原页面进行其他操作. 分析可知:上面打开新页面的写法本身就是错误的,根本无法打开新页面.正确的写法应该是: <a href="javascript:void(0)" onclick="window.ope

  • 如何动态加载外部Javascript文件

    最近在网上找到了一个可以动态加载js文件的js加载器,具体代码如下: JsLoader.js var MiniSite=new Object(); /** * 判断浏览器 */ MiniSite.Browser={ ie:/msie/.test(window.navigator.userAgent.toLowerCase()), moz:/gecko/.test(window.navigator.userAgent.toLowerCase()), opera:/opera/.test(windo

  • 动态载入/删除/更新外部 JavaScript/Css 文件的代码

    动态载入 JavaScript/Csss 文件 传统加载外部JavaScript(*.js) 或者 Css(*.css)文件的方法是直接在<head>标签里面进行添加: 复制代码 代码如下: <head> <script type="text/javascript" src="myscript.js"></script> <link rel="stylesheet" type="te

  • 动态加载外部javascript文件的函数代码分享

    复制代码 代码如下: (function (clover) { clover.loadScript = function loadScript(url, callback) { var heads = document.getElementsByTagName('head'); if (heads.length == 0) { alert("page must have one head element"); } var head = heads[0]; var script = do

  • javascript 获取特定的 CSS属性值

    <link id="system_style" type="text/css" href="global.css" rel="stylesheet"/>  <div id="myArticle"> ... </div> 在global.css中声明了 #myArticle{ width:400px;  height:300px; } 这样的情况下,直接通过JS进行getE

  • JavaScript中定义类的方式详解

    本文实例讲述了JavaScript中定义类的方式.分享给大家供大家参考,具体如下: Javascript本身并不支持面向对象,它没有访问控制符,它没有定义类的关键字class,它没有支持继承的extend或冒号,它也没有用来支持虚函数的virtual,不过,Javascript是一门灵活的语言,下面我们就看看没有关键字class的Javascript如何实现类定义,并创建对象. 一.定义类并创建类的实例对象 在Javascript中,我们用function来定义类,如下: function Sh

  • 关于JavaScript与HTML的交互事件

    JavaScript和HTML的交互是通过事件实现的.JavaScript采用异步事件驱动编程模型,当文档.浏览器.元素或与之相关对象发生特定事情时,浏览器会产生事件.如果JavaScript关注特定类型事件,那么它可以注册当这类事件发生时要调用的句柄. 事件流 事件流描述的是从页面中接收事件的顺序,比如有两个嵌套的div,点击了内层的div,这时候是内层的div先出发click事件还是外层先触发?目前主要有三种模型 IE的事件冒泡:事件开始时由最具体的元素接收,然后逐级向上传播到较为不具体的元

  • JavaScript 基础问答三

    9. JavaScript的注释(Comments in JavaScript) Q:我如何在JavaScript代码中插入注释? A:JavaScript支持三种不同类型的注释: 多行C样式的注释. 包括在/* 和 */ 内的内容都是注释,例如: /* This is a comment */ /* C-style comments can span as many lines as you like, as shown in this example */ C++样式的单行注释.这些注释以/

  • Google 爬虫如何抓取 JavaScript 的内容

    我们测试了谷歌爬虫是如何抓取 JavaScript,下面就是我们从中学习到的知识. 认为 Google 不能处理 JavaScript ?再想想吧.Audette Audette 分享了一系列测试结果,他和他同事测试了什么类型的 JavaScript 功能会被 Google 抓取和收录. 长话短说 1. 我们进行了一系列测试,已证实 Google 能以多种方式执行和收录 JavaScript.我们也确认 Google 能渲染整个页面并读取 DOM,由此能收录动态生成的内容. 2. DOM 中的

  • JavaScript执行顺序详细介绍

    之前从JavaScript引擎的解析机制来探索JavaScript的工作原理,下面我们以更形象的示例来说明JavaScript代码在页面中的执行顺序.如果说,JavaScript引擎的工作机制比较深奥是因为它属于底层行为,那么JavaScript代码执行顺序就比较形象了,因为我们可以直观感觉到这种执行顺序,当然JavaScript代码的执行顺序是比较复杂的,所以在深入JavaScript语言之前也有必要对其进行剖析.1.1  按HTML文档流顺序执行JavaScript代码首先,读者应该清楚,H

随机推荐