【问题标题】:preventDefault, make changes and continue routinepreventDefault,进行更改并继续例行程序
【发布时间】: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


【解决方案1】:

改用stopPropagation

http://api.jquery.com/event.stoppropagation/ - 了解更多信息

【讨论】:

  • 对不起,我没有正确理解。尝试使用 event.isPropagationStopped() ?谢谢。
  • 使用 stopPropagation 代替 preventDefault 方法。不确定这是否可行,但请尝试 ti
  • 我将使用 window.open 因为我找到了使这项工作的方法(我是新手),我认为它既简单又快速。谢谢!!!
【解决方案2】:

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

一旦创建了click,如果您更改元素的href 属性,则不会发生任何事情。您正在寻找的是重定向用户,这可以通过修改位于 window 上的 location 对象来实现。

代替这一行:

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

试试这个:

window.location = 'http://intodns.com/' + urlOriginal;

【讨论】:

    猜你喜欢
    • 2018-10-14
    • 2021-12-02
    • 1970-01-01
    • 1970-01-01
    • 2018-10-29
    • 2015-01-21
    • 1970-01-01
    • 2014-03-15
    • 1970-01-01
    相关资源
    最近更新 更多