我有以下内容:
<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/