我有以下内容:
<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问题......
答案 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
事件中,或将整个事情拉出来并将其分开:
答案 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>
......因为这似乎有效。