0

我有一个带有脚本的小站点,该脚本使用 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如何修复它?

谢谢

4

2 回答 2

0

试试stopPropagation

http://api.jquery.com/event.stoppropagation/ - 阅读更多相关信息

于 2014-07-30T22:04:17.790 回答
0

如果我理解正确,您希望将用户重定向到不同的链接,而不是href属性中设置的链接。

完成后,如果您更改元素的属性,则不会click发生任何事情。href您正在寻找的是重定向用户,这可以通过修改location驻留在window.

而不是这一行:

this.href = 'http://intodns.com/' + urlOriginal;

尝试这个:

window.location = 'http://intodns.com/' + urlOriginal;
于 2014-08-01T11:55:59.313 回答