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

Javascript 在IE 8中查看站点时无法加载本地JQuery文件,javascript,jquery,asp.net,jquery-ui,jquery-plugins,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="h

我正在尝试使用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

$(文档).ready(函数(){
警惕(“你好”);
$('#MainContent_calStart').datetimepicker();
});
script language=“javascript”type=“text/javascript”>
函数GetItem(strName){
return document.all?document.all[strName]:document.getElementById(strName);
}
... 等等等等等等
“我的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中创建一个示例网站项目,并包含上面的文件/代码,那么示例网站就可以工作了。示例和我的live站点之间的唯一区别是live站点中有额外的页面/css/js文件。这两个站点的结构在脚本位置/css位置等方面是相同的。示例站点在IE和FF中都工作良好

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

感谢您的帮助。干杯

吉米


另外,我不能包含任何本地js文件,不仅仅是有问题的那个。

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

私有void AddScript(字符串src) { HtmlGenericControl genCtrl=新的HtmlGenericControl(); genCtrl.TagName=“脚本”; genCtrl.Attributes.Add(“type”,“text/javascript”); genCtrl.Attributes.Add(“语言”、“javascript”); genCtrl.Attributes.Add(“src”,src); 页面.标题.控件.添加(genCtrl); }

您将需要一个头runnat=server

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

如果您正在开发一个internet站点,而不是使用cdn文件,因为它将节省您的带宽+许多cdn文件由cdn网络预加载/缓存。

我在IE8中遇到了相同的错误(对象不支持此属性或方法),当时我使用了使用indexOf的插件(也在jQuery插件本身中)(http://www.w3schools.com/jsref/jsref_indexof.asp).IE8不支持此函数。我将此函数更改为jQuery的.Array函数(http://api.jquery.com/jQuery.inArray/),而且非常愚蠢:它还使用indexOf

为了解决这个问题,我将这个函数替换为一个for循环,该循环搜索数组/字符串/…只有这样才解决了我在IE8上的问题


我希望它能帮上忙!

下面是如何在不支持它的浏览器中多填充indexOf的方法:找到答案了吗?
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")); 
}