jQuery 脚本在 Firefox 和 Internet Explorer 上返回新窗口

标签 jquery firefox object

我的页面上有一个元素的切换按钮,当我单击它时,我可以看到脚本运行并切换该元素,但随后我得到一个新窗口,其中返回了 JS 对象[我猜..] 。它只是一个空白窗口,其中包含我的 href url,上面写着 [object Object]
在 chrome 中没问题,但 ie 和 firefox 就这样做。 我这样做的方式是

<a href="javascript:jQuery('#thatDude').toggle();">click</a>
<div id="thatDude">blah</div>

更奇怪的是我也有这是我的脚本文件

jQuery('.someBtn').live('click', function() {
  jQuery('#someForm').toggle();
});

当我点击它时 - 它在任何地方都可以正常工作...[是的,我知道我应该将 live 更改为 delegate =] ]

有人知道这是怎么回事吗? 我使用 jquery 1.6 [但 1.4.4 也是如此..]

非常感谢

最佳答案

发生的事情是,javascript: URI 中脚本的返回值(如果该返回值不为空)将被视为 HTML 并按此进行解析。 WebKit 除外,它没有实现该功能(下面提到的一个异常(exception))。在你的例子中,我假设 jQuery 的 toggle() 返回一个未定义的实际值,并且该值被视为要解析为 HTML 的字符串。

您可以在 IE、Firefox 和 Opera 中查看这个简单测试用例的行为:

<a href="javascript:'<h1>some text</h1>'">Click me</a>

这在 WebKit 浏览器中完全失败,尽管这在 WebKit 中确实有效,因为它们专门破解了一个代码路径:

<iframe src="javascript:'<h1>some text</h1>'"></iframe>

如果您想确保脚本的返回值为 void,请将 void(0) 放在脚本末尾。

关于jQuery 脚本在 Firefox 和 Internet Explorer 上返回新窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5933728/

相关文章:

firefox - 如何禁用 Firefox 加载项在启动时进行更新检查

Java,是否可以将 'convert'对象从子类传递到父类(super class)对象

c++ - 是否可以先创建 C++ 指针,而不是先创建一个变量,然后再为其创建一个指针?

android - 在 Java 中,如何将 Realm 对象转换为我希望写入数据库的类?

javascript - JQuery .attr() 不适用于指定的 ID

javascript - Dropzone.js 如何使用 TR 或 TBODY 作为预览模板?

javascript - Protractor 测试用例无法在 Firefox 上运行

javascript - 原型(prototype) - TypeError : A. TravelTo 不是函数

javascript - Bootstrap 3 - 居中导航和后面的图像

jQuery 倒计时 Keith Wood 无法在 mozilla 中工作