SCRIPT5009:IE9中未定义“$”

时间:2011-10-19 13:03:12

标签: jquery internet-explorer-9 bookmarklet

我有一个书签,可以将div加载到当前页面并在其中放置iframe。除了IE9之外,bookmarklet在所有浏览器中都像梦一样。甚至适用于早期版本的IE。

我正在使用以下bookmarklet框架:

http://idc.anavallasuiza.com/project/bookmarklets

其他人在这里遇到了类似的问题(与bookmarklet无关):

https://forum.jquery.com/topic/retrieved-html-data-type-with-jquery-ajax-in-ie9-scripts-tags-sources-could-not-be-loaded

到目前为止,我理解我的bookmarklet的jQuery在IE9中没有正确加载。

bookmarklet尝试加载自己的jQuery,以便在书签初始化时可以运行某些效果,并且易于编程。

iFrame页面还加载了jQuery(没有它,iframe中的内容无法正常工作)。

我正在使用最新的jQuery:

http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js

我想知道为什么IE9在没有其他浏览器时会导致这些SCRIPT错误?为什么在IE9中没有正确加载jQuery?

非常感谢任何见解。

2 个答案:

答案 0 :(得分:6)

我刚刚花了几个小时来解决这个问题,最后找到了一个我觉得可以帮到你的解决方案。

以下是为我带来问题的代码的简化版本:

$frames = $(*html_including_frames_here*);
$div = $('<div></div>');
$div.append($frames);
$('body').append($div);

**将一个或多个帧加载到不在DOM中的div中,然后将该div加载到DOM中会导致我的所有问题。框架不会按原样加载JS脚本,然后所有内容(jQuery,JSON等)都是未定义的。

另一方面,这有效:

$frames = $(*html_including_frames_here*);
$div = $('<div></div>');
$('body').append($div);
$div.append($frames);

这里唯一的区别是我首先将div放在dom中,然后将帧加载到其中。不知何故,这一切都有所不同。

答案 1 :(得分:1)

谢谢你的问题,我遇到了同样的问题。我第一次使用jquery.com(http://code.jquery.com/jquery-1.7.1.js)加载jquery来修复它。然后IE9加载它。也许微软阻止了一些google-apis?很有意思......