在IE 8中查看站点时无法加载本地JQuery文件

时间:2013-01-15 12:29:21

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

我正在尝试使用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 Char:1 代码:0 URI :( localhost上的页面路径)

网站炸弹在$(&#39;#MainContent_calStart&#39;)。datetimepicker();错误&#34; Microsoft JScript运行时错误:对象不支持此属性或方法&#34;指示浏览器无法从包含文件中找到datetimepicker小部件的源/声明。如果我继续加载网站,尽管js错误,datetimepicker小部件加载并且似乎完全正常。

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

最后一件事,如果我将所有代码从jquery-ui-timepicker-addon.js移动到母版页本身并排除js文件,该网站就可以工作了。这指出了在本地文件中没有加载js代码的事实。

感谢任何帮助。欢呼声。

PS。我不能包含任何本地js文件,而不仅仅是相关的文件。

2 个答案:

答案 0 :(得分:0)

在您的母版页代码中尝试此操作

private void AddScript(string src)     {         HtmlGenericControl genCtrl = new HtmlGenericControl();         genCtrl.TagName =“script”;         genCtrl.Attributes.Add(“type”,“text / javascript”);         genCtrl.Attributes.Add(“language”,“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网络预加载/缓存。

答案 1 :(得分:0)

当我使用一个使用indexOf的插件(也在jQuery插件本身中)时,我在IE8中遇到了同样的错误(Object不支持这个属性或方法)(http://www.w3schools.com/jsref/ jsref_indexof.asp)。在IE8中以某种方式不支持此功能。我将此函数更改为jQuery的in.Array函数(http://api.jquery.com/jQuery.inArray/),并且足够愚蠢:这也使用indexOf。

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

我希望它有所帮助!