在IE8中未定义JQuery

时间:2012-11-16 17:47:01

标签: javascript jquery internet-explorer

在我的页面底部,我是一个不执行异步调用的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返回的,标题为

<?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;
?>

2 个答案:

答案 0 :(得分:3)

这将是一个漫长的过程,但从你的评论来看,我知道发生了什么。

你说PHP将多个JavaScript文件连接在一起并一次性提供服务;这通常是一个好主意(虽然我会去静态编译,但仍然只使用Web服务器)。

Internet Explorer因在对象中逗号放置而迂腐而臭名昭着,例如

var a = {
    x: 123,
    y: 456,
}

在声明y属性后看到无关的逗号?大多数浏览器并不关心这些东西,大多数PHP开发人员总是使用它以方便使用。

另一方面,Internet Explorer对此进行了轰炸,并停止运行后面的其余代码。在你的情况下,如果它前面有你自己的代码,那可能包括jQuery(因为John Resig永远不会犯“n00b”错误:))

答案 1 :(得分:1)

尝试将.php添加到脚本标记的

<script src="/scripts/jquery.php" type="text/javascript"></script>