我有一个带有脚本的小站点,该脚本使用mysql运行查询并返回一些数据,包括域。这些域是生成html链接,我想在javascript中更改,因为我无法访问php的部分,但是javascript和css代码是。
我只是希望您在链接上触发click事件时运行代码。我试图默认停止执行并进行更改,但我的代码不会打开页面。如果我删除preventDefault只能在firefox中工作,但我还没有chrome。 (window.open不使用,我想更改原始链接)。
var domains = document.getElementsByClassName("domain");
for(var x = 0; x < domains.length; x++){
if(domains[x].addEventListener) {
domains[x].addEventListener("click", changeLink, "false");
} else if(domains[x].attachEvent) {
domains[x].attachEvent("onclick", changeLink);
}
}
function changeLink(evt){
var urlOriginal = this.href;
// If I remove preventDefault, the function runs correctly on firefox but not in chrome
evt.preventDefault();
if(urlOriginal != 'http://google.com') {
urlOriginal = urlOriginal.replace(/http:\/\//g, '');
evt.stopPropagation();
this.href = 'http://intodns.com/' + urlOriginal;
console.log('Okay !');
}
return true;
}
我尝试了几项更改但没有一项正在运行,事实并非如此。
有谁知道故障的原因?如何在没有window.open的情况下修复它?
由于
答案 0 :(得分:0)
尝试stopPropagation
而不是
答案 1 :(得分:0)
如果我理解正确,您希望将用户重定向到其他链接,而不是href
属性中设置的链接。
创建click
后,如果更改元素的href
属性,则不会发生任何事情。您正在寻找的是重定向用户,这可以通过修改驻留在window
上的location
对象来实现。
而不是这一行:
this.href = 'http://intodns.com/' + urlOriginal;
试试这个:
window.location = 'http://intodns.com/' + urlOriginal;