js 如何在网页加载之前替换掉源码内的指定链接
比如百度加载之前会读以*.bdimg.com开头的一些资源文件我现在想把只要是以baidu.com、bdimg.com等结尾的链接全都替换成localhost这是替换的代...
比如 百度
加载之前会读以 *.bdimg.com 开头的一些资源文件
我现在想把只要是以 baidu.com 、bdimg.com 等结尾的链接全都替换成localhost
这是替换的代码 但是该如何获取这些链接呢
var src = ????;
var regexp = "https?:\/\/[a-zA-Z0-9_\-\.]+\.?b(aidu|dimg|dstatic)\.com";
var replacement = "http:\/\/localhost";
src = src.replace(regexp, replacement);
然后再怎么写? 展开
加载之前会读以 *.bdimg.com 开头的一些资源文件
我现在想把只要是以 baidu.com 、bdimg.com 等结尾的链接全都替换成localhost
这是替换的代码 但是该如何获取这些链接呢
var src = ????;
var regexp = "https?:\/\/[a-zA-Z0-9_\-\.]+\.?b(aidu|dimg|dstatic)\.com";
var replacement = "http:\/\/localhost";
src = src.replace(regexp, replacement);
然后再怎么写? 展开
3个回答
2014-06-03
展开全部
原理:1.想js最先加载就把这段话放在header style标签之前。
2.遍历所有超链接
3.批量替换
var regexp = "https?:\/\/[a-zA-Z0-9_\-\.]+\.?b(aidu|dimg|dstatic)\.com";
var replacement = "http:\/\/localhost";
//jquery版
$("a").each(function(index){
var u=$(this).attr("href");
$(this).attr("href",u.replace(regexp,replacement));
});
//原生js
for(var i = 0; i < document.links.length; i++) {
var u=document.links[i].href;
document.links[i].href=u.replace(regexp,replacement);
}
要用jQuery记得加载jQuery库。
追问
谢谢你的回答 不过我不能控制那个页面 所以这个只能自己写代码的时候用
展开全部
直接location.href=src;不是???就直接跳转了呀???
更多追问追答
追问
不是location.href 我只是想替换网页内的源码 并不是跳转到指定链接
追答
那你的src是不清楚吗??你源码里面哪些地方是放源码的给个标识,在js里面取出来不行吗???
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把整个页面当成字符串贝
更多追问追答
追问
能详细说下吗
追答
js是在客户端加载的,所以没有加载前替换的,
如果想加载前替换只能用后端的语言.
如果一定用JS, 可以有这么几种办法假装下,,
办法一: AJAX,,将取道得页面返回整个字符串,进行解析,,也可以返回DOM对象进行解析....
办法二: 如果加载的页面你能控制的话, 可以先将body 隐藏,,,然后把body里的内容当成整个字符串进行解析....解析完后再显示...
字符串的解析就是上面你自己写的阿...
var src = document.getElementsByTagName("body")[0].innerHTML;
当然必须加载万body, 才能取道值.....
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询