1

在我的页面底部,我是一个不执行异步调用的 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;
?>
4

2 回答 2

3

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

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

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

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

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

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

于 2012-11-16T18:11:33.037 回答
1

尝试将 .php 添加到 script 标签的 src 属性

<script src="/scripts/jquery.php" type="text/javascript"></script>
于 2012-11-16T18:00:39.403 回答