【问题标题】:Why is this 'href' value not working in Opera?为什么这个“href”值在 Opera 中不起作用?
【发布时间】:2011-02-19 04:19:22
【问题描述】:

我有以下几点:

<a href="javascript:jQuery('body').css('backgroundColor','red');">Test</a>

在 Chrome 中运行时,它会按预期运行并将页面变为红色。但是,在 Opera 中我得到:

[对象对象]

仔细检查发现 Opera 认为javascript:Query('body')... 是某种 URL。我究竟做错了什么? Opera 不能识别 href 属性中的 javascript: 链接吗?

jsFiddle:http://jsfiddle.net/9CZZL/


编辑: 似乎也是 Firefox 的问题...

【问题讨论】:

  • 避免这样做,单独处理所有点击事件..这是非常古老的做法

标签: javascript jquery opera


【解决方案1】:

问题在于jQuery('body').css('backgroundColor','red') 的返回值是一个对象,一些浏览器将其解释为网页的新内容。要解决此问题,您可以使用 JavaScript void 运算符将其转换为 undefined,FF 和 Opera(可能还有其他人)将按照您的意图进行处理。您会注意到该页面上也描述了此问题,因为它是void 运算符的主要用例(除了代码高尔夫,其中void 0 的字符数少于undefined)。

<a href="javascript:void(jQuery('body').css('backgroundColor','red'));">Test</a>

这应该给出预期的结果:http://jsfiddle.net/9CZZL/13/

应该注意,以这种方式处理点击被认为是不好的做法。相反,建议在 JavaScript 中使用事件处理程序。这有助于分离 Web 应用程序的不同层,从而使将来的调试更容易。

【讨论】:

    【解决方案2】:

    我刚刚进行了谷歌搜索,不,显然 Opera 无法识别“javascript:”href 值。您必须实现 onClick 或类似的解决方案。

    【讨论】:

      【解决方案3】:

      在 Firefox 中也是如此....不太清楚为什么。但我从不喜欢将 JavaScript 直接放在 URL 中...您可以尝试将其放在 onclick 事件中,或者将整个内容拉出来并将其分开:

      http://jsfiddle.net/mnbayazit/6d5An/

      【讨论】:

        【解决方案4】:

        这些在 Opera 10.1 中对我来说都是 href 值:

        javascript:void(0)
        javascript:alert("Hello")
        javascript:window.location.href = 'http://www.google.com'
        

        你的 sn-p 没有。

        可行的解决方法是:

        <a href="#" onclick="$('body').css('background-color','red')">Test</a>
        

        甚至:

        <a href="javascript:void(0)" onclick="$('body').css('background-color','red')">Test</a>
        

        ...因为这似乎有效。

        【讨论】:

        • 是的,我可能会选择后者。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-05-15
        • 2015-03-11
        • 1970-01-01
        • 1970-01-01
        • 2010-11-01
        • 2015-11-16
        • 2011-10-26
        相关资源
        最近更新 更多