在我页面的底部,我是一个不执行异步调用的 jquery 函数。它在 Chrome、FireFox 中运行良好。但是在 IE8 中它说 jQuery 是未定义的。是什么原因造成的?
<script src="/scripts/jquery" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
jQuery.ajax( "dev/js/templates", {
async : false,
success: function (data) {
$("#tpl_scripts").html(data);
}
})
</script>
请注意,脚本是从 PHP 返回的, header 为
<?php
$script = file_get_contents('/libs/scripts/jquery.1.8.2');
if (extension_loaded("zlib") && (ini_get("output_handler") != "ob_gzhandler")) {
ini_set("zlib.output_compression", 1);
}
header('Content-type: text/javascript');
echo $script;
?>
最佳答案
这将是一个远景,但从您的评论来看,我知道发生了什么。
您说 PHP 将多个 JavaScript 文件连接在一起并一次性提供服务;这通常是个好主意(尽管我会选择静态编译并且仍然只使用 Web 服务器)。
Internet Explorer 因对对象中的逗号位置迂腐而臭名昭著,例如
var a = {
x: 123,
y: 456,
}
看到 y
属性声明后那个多余的逗号了吗?大多数浏览器并不关心这些内容,而且大多数 PHP 开发人员总是为了方便而使用它。
另一方面,Internet Explorer 对此进行了轰炸,并停止运行后面的其余代码。在你的情况下,如果它前面有你自己的代码,那可能包括 jQuery(因为 John Resig 永远不会犯那个“n00b”错误:))
关于javascript - IE8 中未定义的 JQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13421779/