在动态页面上使用javascript重写链接

时间:2011-09-08 07:25:30

标签: javascript dom

我正在编写一个脚本,应该重写页面上从http://到https:// 的所有链接 - 它必须在客户端完成,它在我无法控制的页面中运行。

执行环境:仅限最近的Chrome,因为这是Chrome扩展程序的注入脚本,所以没有跨浏览器的担忧。注入发生在document_start(即在DOM开始加载之前)。

我的第一次尝试是观察DOMContentLoaded,然后遍历document.links:

document.addEventListener("DOMContentLoaded", rewriteHTTPS, false);

function rewriteHTTPS() {
    var links = document.links;
    for(var i in links){
        links[i].href = links[i].href.replace(/http:/, "https:");
    }
}

不幸的是,我意识到该页面是动态的,因此在此事件被触发后会添加更多链接。

所以,问题是:使用动态DOM捕获页面中所有新链接和修改链接的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

您可能希望调查DOMNodeInserted事件,甚至认为它在IE中的支持似乎不稳定。该问题的其他答案也可能有所帮助。