我正在尝试使用datetimepicker控件(http://timjames.me/jquery-ui-datetimepicker-plugin),但我的本地js文件似乎在加载时遇到了问题--但仅限于IE (8.0.6版),因为它在Firefox18.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 (兼容;MSIE8.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)时间戳: Tue,15 Jan 2013 13:31:47 UTC
消息:语法错误行:3字符:1代码:0 URI:(localhost上页面的路径)
该站点在$(‘#MainContent_calStart’).datetimepicker()行投掷炸弹,并显示错误"Microsoft JScript运行时错误:对象不支持此属性或方法“,表明浏览器无法从包含文件中找到datetimepicker小部件的源/声明。如果我在js错误的情况下继续加载站点,则将加载datetimepicker小部件,并且看起来功能完全正常。
奇怪的是,如果我使用代码在VS2010中创建一个示例网站项目,并包括上面的文件/代码,示例网站就可以工作了。示例和我的实时站点之间的唯一区别是在实时站点中有额外的页面/css/js文件。这两个网站的结构在脚本位置/css位置等方面是相同的。示例网站在IE和FF中都工作得很好。
最后一件事是,如果我将jquery-ui-timepicker addon.js中的所有代码移到母版页本身并排除js文件,站点就可以工作了。这表明js代码在本地文件中时不会被加载。
任何帮助都是非常感谢的。干杯。
吉米
PS。我不能包含任何本地js文件,不能只包含有问题的文件。
发布于 2013-01-15 21:46:46
当我使用一个使用indexOf (http://www.w3schools.com/jsref/jsref_indexof.asp)的插件(也在jQuery插件本身中)时,我在IE8中遇到了同样的错误(对象不支持这个属性或方法)。在某种程度上,IE8不支持此函数。我将此函数更改为jQuery (http://api.jquery.com/jQuery.inArray/)的in.Array函数,这也使用了indexOf。
为了解决这个问题,我用一个for循环替换了这个函数,该循环搜索数组/字符串/...只有这样才解决了我在IE8上的问题。
我希望它能有所帮助!
发布于 2013-01-15 21:46:12
在后台的母版页代码中尝试这一点
private void AddScript(string src) { HtmlGenericControl genCtrl =新HtmlGenericControl();genCtrl.TagName =“脚本”;genCtrl.Attributes.Add(“类型”,“文本/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网络预先加载/缓存的。
https://stackoverflow.com/questions/14337782
复制相似问题