为什么这个“href”值在Opera中不起作用?

时间:2011-02-19 04:19:22

标签: javascript jquery opera

我有以下内容:

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

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

  

[object Object]

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

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


编辑:似乎也是一个Firefox问题......

4 个答案:

答案 0 :(得分:6)

问题是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应用程序的不同层,从而使将来的调试更加容易。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

它是否也在Firefox中......不太清楚为什么。但是我从不喜欢将JavaScript放在URL中......你可以尝试将它放在onclick事件中,或将整个事情拉出来并将其分开:

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

答案 3 :(得分:1)

这些都在Opera 10.1中用作href值:

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

但您的代码段不是。

可行的解决方法是:

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

甚至:

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

......因为这似乎有效。