我正在尝试使用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文件,而不仅仅是相关的文件。
答案 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上的问题的数组/字符串/ ....
我希望它有所帮助!