我正在尝试使用一些vanilla Javascript替换整个页面上的url值。我不能使用任何库/框架。到目前为止,这是我在标签之间的每个页面顶部放置的内容:
<script type="text/javascript">
function change_url() {
var str = '';
str = str.replace(/blog\.domain\.info/g, 'blogtest\.domain\.info');
}
change_url();
</script>
但是,当页面加载时,这不起作用。
基本上,我需要资源链接从http://blog.domain.info转到http://blogtest.domain.info。简单的任务,我知道!但是上面的代码到目前为止还不起作用。
有关改变内容的建议?
答案 0 :(得分:14)
阅读完评论后,您需要
之类的内容function replace_url(elem, attr) {
var elems = document.getElementsByTagName(elem);
for (var i = 0; i < elems.length; i++)
elems[i][attr] = elems[i][attr].replace('blog.domain.info', 'blogtest.domain.info');
}
window.onload = function() {
replace_url('a', 'href');
replace_url('img', 'src');
// etc
}
答案 1 :(得分:2)
如果您要定位链接,可以执行以下操作:
<script type="text/javascript">
var els = document.getElementsByTagName('a'),
len = els.length;
while( len-- ) {
els[len].hostname = els[len].hostname.replace('blog.domain.info','blogtest.domain.info');
}
</script>
将此脚本放在结束</body>
标记内。
对于其他标记,请指定要更新的标记名称和属性。
答案 2 :(得分:1)
我参加聚会太晚了,但希望对别人有帮助。
您的代码很完美,它只需要处理文本并提供反馈的方式,所以这就是我会做的,请注意,我不是专家,只是提琴手。
<script type="text/javascript">
//added “str” as a function input/parameter
function change_url(str) {
/* removed this
var str = ''; */
/* changed this
str =
to this */
return str.replace(/blog\.domain\.info/g, 'blogtest\.domain\.info');
}
//and called it like this
document.onload = function(){
document.getElementsByTagName('head')[0].outerHTML = change_url(document.getElementsByTagName('head')[0].outerHTML);
}
</script>
如果您要更改整个文档中的所有引用,则只需像这样称呼它即可。
document.onload = function(){
document.getElementsByTagName('head')[0].outerHTML = change_url(document.getElementsByTagName('head')[0].outerHTML);
document.getElementsByTagName('body')[0].outerHTML = change_url(document.getElementsByTagName('body')[0].outerHTML);
}
这将更改对src,href,img和!! TEXT !!中找到的任何实例中blog.domain.info的所有引用。 因此请小心使用它,因为所有前述参考都将被更改。 ; o)
答案 3 :(得分:0)
嗯,这是非常困难的,因为如何在遇到标题之前更改标题中的项目?如果你可以强迫你的JS在加载之前运行,也许,但我怀疑它。您可以进行后加载,查找条目,重写它们并异步加载它们,但代码可能会错过初始化事件。它会变得复杂。
可以使用其他答案中提到的getElementsByTagName()
方法来解决元素问题。这适用于src/href
更改,但不会处理CSS图像,尤其是background-image
,这可能会出现在很多元素上。然后就是这类事情附加在课堂上的问题,这将需要搜索课程条目,这是一个痛苦。我怀疑改变像RSS feed,favicons等元信息会在后载时生效。
最好真正处理服务器端。