【发布时间】:2014-07-30 21:58:51
【问题描述】:
我有一个带有脚本的小站点,该脚本使用 mysql 运行查询并返回一些数据,包括域。这些域是生成的 html 链接,我想在 javascript 中进行更改,因为我无法访问 php 的部分,但可以访问 javascript 和 css 代码。
我只想让您在链接上触发点击事件时运行代码。我试图默认停止执行并进行更改,但我的代码没有打开页面。如果我删除 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如何解决?
谢谢
【问题讨论】:
-
你为什么将
"false"(字符串)传递给addEventListener?我假设您打算通过false(布尔值)? -
@Tudmotu 尝试省略了错误,但是我在阅读博客时看到了一个示例,所以我使用了它,我添加了它,以为可能会解决我的错误。它不起作用,放假或省略。谢谢
标签: javascript addeventlistener preventdefault stoppropagation attachevent