我有一个运行 js 文件的 header ,该文件可以包含在其他人的网站上,但是在 IE8 和 IE9 中,我得到:
'$' is undefined
在控制台中。
我的代码仅在 IE8 或 IE9 上使用 jQuery,因为跨域问题是通过 jQuery 库中的内置函数解决的。在 WordPress 网站上浏览时,包含的脚本工作正常,但在另一个没有预先加载 jQuery 的网站上,它不起作用,并且我用来在加载 jQuery 代码之前在 header 中包含 jQuery 的代码也不起作用。
var isIE = getInternetExplorerVersion();
if (isIE == 8 || isIE == 9) {
// Insert jQuery <script> to <head>.
var head = document.getElementsByTagName( 'head' )[0], script;
script = document.createElement( 'script' );
script.type = 'text/javascript';
script.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js';
head.insertBefore( script, head.lastChild );
// Run jQuery test
$('html').click(function(){
// Runs without issue on sites that ALREADY have jQuery loaded when IN IE.
alert('Clicked while in IE');
});
} else {
// Runs without issue when not on IE.
alert('Not in IE');
}
对于那些想知道的人,这是确定 IE 版本的函数(在本例中无关紧要,因为它有效):
function getInternetExplorerVersion() {
var rv = -1; // Return value assumes failure.
if (navigator.appName == 'Microsoft Internet Explorer');
{
var ua = navigator.userAgent;
var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
if (re.exec(ua) != null) rv = parseFloat( RegExp.$1 );
}
return rv;
}
最佳答案
您无需编写自定义代码来检查 IE 版本。 IE 提供了这个“功能”(;
这是 jQuery 2.0 was released 时的解决方案
<!--[if lt IE 9]>
<script src="jquery-1.9.0.js"></script>
<![endif]-->
<!--[if gte IE 9]><!-->
<script src="jquery-2.0.0.js"></script>
<!--<![endif]-->
有关 Internet Explorer 条件注释的更多信息 here .
关于javascript - 无法在 IE8 或 IE9 中加载 jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25268626/