【问题标题】:Cannot load local JQuery file when viewing site in IE 8在 IE 8 中查看站点时无法加载本地 JQuery 文件
【发布时间】:2013-01-15 12:29:21
【问题描述】:

我正在尝试使用 datetimepicker 控件 (http://timjames.me/jquery-ui-datetimepicker-plugin),但似乎我的本地 js 文件无法加载 - 但仅在 IE 中(版本 8.0.6)因为它在 Firefox 18.0 版中运行良好。

我使用以占位符“MainContent”命名的母版页,因此我的所有子页面控件都需要由 MainContent_ 引用,后跟控件的 ID。

母版页中的元素包含以下脚本:

<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.min.js"></script>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.16/jquery-ui.min.js"></script>
<link rel="stylesheet" type="text/css" href="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.16/themes/hot-sneaks/jquery-ui.css" />
<script type="text/javascript" src="Scripts/jquery-ui-timepicker-addon.js"></script>
<script type="text/javascript">
    $(document).ready(function () {
        alert("hello");
        $('#MainContent_calStart').datetimepicker();
    });
</script>

script language="javascript" type="text/javascript">
    function GetItem(strName) {
        return document.all ? document.all[strName] : document.getElementById(strName);
    }

... etc etc etc

我的asp.net子页面包含代码:

基本上,托管 datetimepicker 的页面不是站点中加载的第一页,但由于包含脚本的母版页包含(并且无法全部加载),站点的第一页加载时出现 js 错误.

使用 IE 时,我无法将任何本地 JQuery 文件加载/包含到我的网站,因为我收到 Javascript 错误:

网页错误详情

用户代理:Mozilla/4.0(兼容;MSIE 8.0;Windows NT 5.1;Trident/4.0;.NET CLR 2.0.50727;InfoPath.1;.NET CLR 3.0.4506.2152;.NET CLR 3.5.30729;.NET CLR 1.1.4322;.NET4.0C;.NET4.0E) 时间戳:2013 年 1 月 15 日星期二 13:31:47 UTC

消息:语法错误 线路:3 字符:1 代码:0 URI:(本地主机上的页面路径)

网站在 $('#MainContent_calStart').datetimepicker();出现错误“Microsoft JScript 运行时错误:对象不支持此属性或方法”,表明浏览器无法从包含文件中找到 datetimepicker 小部件的源/声明。如果我在 js 错误的情况下继续加载该站点,则 datetimepicker 小部件会加载并且看起来功能齐全。

奇怪的是,如果我在 VS2010 中获取代码并创建一个示例网站项目,并包含上面的文件/代码,示例网站就可以工作。示例和我的实时站点之间的唯一区别是实时站点中有额外的 pages/css/js 文件。两个站点的结构在脚本位置/css 位置等方面是相同的。示例站点在 IE 和 FF 中都可以正常工作。

最后一件事,如果我将 jquery-ui-timepicker-addon.js 中的所有代码移动到母版页本身并排除 js 文件,则该站点可以正常工作。这表明js代码在本地文件中时没有被加载。

感谢任何帮助。干杯。

吉米

PS。我不能包含任何本地 js 文件,而不仅仅是有问题的文件。

【问题讨论】:

  • 你找到答案了吗?

标签: javascript jquery asp.net jquery-ui jquery-plugins


【解决方案1】:

当我使用使用 indexOf 的插件(也在 jQuery 插件本身中)时,我在 IE8 中遇到了同样的错误(对象不支持此属性或方法)(http://www.w3schools.com/jsref/ jsref_indexof.asp)。 IE8 不知何故不支持此功能。我把这个函数改成 jQuery 的 in.Array 函数(http://api.jquery.com/jQuery.inArray/),够傻的:这也用 indexOf。

为了解决这个问题,我将这个函数替换为一个搜索数组/字符串/...的 for 循环,这只是解决了我在 IE8 上的问题。

希望对你有帮助!

【讨论】:

【解决方案2】:

在你的母版页代码中试试这个

private void AddScript(string src) { HtmlGenericControl genCtrl = new HtmlGenericControl(); genCtrl.TagName = "脚本"; genCtrl.Attributes.Add("type", "text/javascript"); genCtrl.Attributes.Add("语言", "javascript"); genCtrl.Attributes.Add("src", src); Page.Header.Controls.Add(genCtrl); }

protected void Page_Load(object sender, EventArgs e)
{ 
    // one minute prior to timeout (milliseconds)
    //timeout = (Session.Timeout * 60000) - 60000;
    Session.Timeout = 90000;

    AddScript(Page.ResolveUrl("~/Scripts/jquery-1.6.1.js"));
    AddScript(Page.ResolveUrl("~/Scripts/jquery-ui.min.js"));
    //AddScript(Page.ResolveUrl("~/Scripts/jquery-1.4.3.min.js"));
    //AddScript(Page.ResolveUrl("~/Scripts/jquery.tablesorter.min.js")); 
}

您将需要一个标头 runnat = server。

问题可能是您的 asp.net 网页不在母版页所在的根目录中,因此脚本的路径不正确。

如果您正在开发互联网站点,请使用 cdn 文件,因为它可以节省带宽 + 大量 CDN 文件由 cdn 网络预加载/缓存。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-10
    • 1970-01-01
    • 2012-10-18
    • 1970-01-01
    • 2013-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多