2013-01-15 28 views
0

我正在尝试使用datetimepicker控件(http://timjames.me/jquery-ui-datetimepicker-plugin),但它显示我的本地js文件在加载时遇到问题 - 但只在IE(版本8.0.6),因为它在Firefox 18.0版本中正常工作。在IE 8中查看网站时无法加载本地JQuery文件

我使用以占位符“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年一月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代码在本地文件中未被加载的事实。

任何帮助表示赞赏。干杯。

Jimmy

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

+0

你有没有找到你的答案? – Rogier

回答

0

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

为了解决这个问题,我将这个函数替换为一个for-loop,它搜索数组/字符串/ ......只有解决了我在IE8上遇到的问题。

我希望它有帮助!

+0

这里是你如何在不支持它的浏览器中使用polyfill indexOf:http://stackoverflow.com/questions/1744310/how-to-fix-array-indexof-in-javascript-for-ie-browsers –

0

在后面

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

私人无效AddScript(字符串SRC) { HtmlGenericControl genCtrl =新HtmlGenericControl(); genCtrl。TagName =“脚本”; 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文件。

相关问题