我有以下内容:

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

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



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

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

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

最佳答案

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

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

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

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

关于javascript - 为什么 'href'值在Opera中不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5048807/

10-09 18:24
查看更多