Internet Explorer 未加载 js 文件
Posted
技术标签:
【中文标题】Internet Explorer 未加载 js 文件【英文标题】:Internet Explorer not loading js file 【发布时间】:2012-05-17 22:26:15 【问题描述】:我在一家在多个国家/地区设有部门的公司工作。在我们当地的部门,我们可以将自己的东西放在网站上,但有很多限制。我在 html 和 jquery 中创建了一个订单表格,所有内容都在一个文件中。当我在 Internet Explorer、Opera 或 Firefox 中从 C:\ 运行此文件时,它完全可以正常工作。
输入对我们本地网站的限制:我不能在 html 页面中输入超过 20 000 个字符。我在我们的本地网站上测试了表单的早期版本,它可以工作,它包含 html 和 jquery,但它远低于 20 000 个字符。现在仅 HTML 部分就有 15 000 个字符,而 jquery 有 75 000 个字符。因此,将 HTML 和 javascript 放在单独的文件中是有意义的。
输入另一个限制:我无法将 .js 文件上传到我们的本地服务器。我想我可以说服总部的人让我这样做,但要说服他们需要一些时间。同时我想找到一些解决方法来发布一个功能表单,这样我们的客户就可以开始试用订单表单,当他们看到一个工作演示时,更容易说服总公司。
https://gist.github.com/ 是一个任何人都可以输入一些 javascript 并制作可访问的 javascript 的地方。我首先在 Opera 上进行了尝试,它成功了,但由于某种原因,它在 Internet Explorer 中无法正常工作。我尝试了很多不同的东西,直到我最终创建了一个像这样的完全基本的 HTML 页面(插入一个头部以使其在浏览器中工作):
<HTML>
<body>
<style type="text/css">
</style>
<SCRIPT src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></SCRIPT>
<FORM enctype="application/x-www-for m-urlencoded" NAME="orderForm" id="orderForm" ACTION="" METHOD="get">
<input type="button" id="TestButton" onclick="TestFunction()" value="some value">
<SCRIPT src="https://raw.github.com/gist/2643863/30916820b71be3f9b89ad41ef060a2dd784b620e/VerySimpleTest.js" type="text/javascript"></SCRIPT>
<!--SCRIPT src="simpleSCRIPTtest.js"></SCRIPT-->
</form>
</body>
</HTML>
我在本地访问 .js 文件和从 Gist 页面之间交替访问,因此是注释的 SCRIPT 行。脚本是这样的:
function TestFunction()
alert("This works!");
在 Opera 中,它在本地和 Gist 都可以正常工作。在本地加载脚本时,它在 IE 中运行良好,但是当我尝试使用 Gist 页面作为脚本源并按下按钮时,我收到错误消息“属性 'TestFunction' 的值为 null 或未定义,而不是函数对象”。
如果由我决定,我会告诉我们所有的客户使用 Opera 或 Chrome,但恐怕这不是一个选择。有谁知道为什么这在 IE 中不起作用?如果是这样,是否知道如何创建一个我的 HTML 页面可以访问的外部 .js 文件,该文件适用于 IE、Opera、Chrome 和 Firefox?
【问题讨论】:
您需要在使用它的一项功能(例如,在您的按钮中)之前加载您的脚本,我认为您不会这样做。跨度> jQuery 1.7.2 是最新版本。既然你已经在使用 1.7.1,你真的应该升级了。 您的脚本从远程服务器下载时需要一些时间才能到达您的导航器。如果您单击按钮并且尚未加载脚本,它将不起作用。将 Elliot Bonneville:我尝试将底部的 SCRIPT 行直接放在第一行的下方,但这并没有什么区别。它在 Opera 中仍然有效,但在 IE 中无效。 ThiefMaster:我已经改到1.7.2版了,但这也没什么区别。在 Opera 中工作,而不是在 IE 中。 【参考方案1】:我们看不到文档类型,因此如果这不是 HTML5,您需要在 simpleSCRIPTtest.js 的脚本标签中包含 type="text/javascript" 属性。
【讨论】:
如果您查看我引用的代码,我确实在 SCRIPT 标记中有 type="text/javascript"。 不在 simpleScripttest.js 的标签中。 对不起,我看错了你的第一篇文章。对于 IE,HTTP 标头需要包含“ContentType: text/javascript”或“ContentType: application/javascript”。我不能用 Gist 做到这一点,所以我在本地服务器上尝试了它。无法从我们的网络外部访问此服务器,因此我必须以某种方式安装一个临时服务器来控制它。以上是关于Internet Explorer 未加载 js 文件的主要内容,如果未能解决你的问题,请参考以下文章
Internet Explorer 中的 CSS“未设置”/“初始”
Angular 应用程序与 Internet Explorer 的兼容性
在 Internet Explorer 中未定义 constructor.name
Internet Explorer 11 中的“未处理的承诺拒绝 TypeMismatchError”