我似乎无法让“对话框”选项设置为在IE 8中工作,在其他任何地方都可以工作,但在IE8中则是这样说的。
Webpage error details
User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)
Timestamp: Tue, 4 Feb 2014 23:19:02 UTC
Message: Object doesn't support this property or method
Line: 974
Char: 4
Code: 0
URI: http://dev.site.com/page这是它所指的行。
root.datepicker('dialog',root.text().trim(),function(date){
root.text(date);
saveCourseDate(root);
},{
altFormat:'yy-mm-dd',
dateFormat:'yy-mm-dd'
});root是span标记的jquery对象。不过,在其他浏览器中工作得很好。
据我所见,这不是jquery问题,因为在同一页上,我有另一个没有对话框选项的日期选择器,它可以工作。
jQuery('#course_date').datepicker({altFormat:"yy-mm-dd",dateFormat: "yy-mm-dd"});我所做的网站是企业级的,所以IE8是绝对必须的。我试图搜索这个问题,虽然我看到了关于jquery的IE8问题的主题,但似乎没有一个能与此相匹配。
有什么想法吗?
发布于 2014-02-04 23:37:09
两个代码片段之间的区别是root.text().trim()部分。这在IE8中行不通,因为String.prototype.trim不是在IE8中定义的;支持是从IE9开始的。
由于您有jQuery,所以最好使用它的实用函数$.trim()。你会把它当作:
root.datepicker('dialog',$.trim(root.text()),function(date){您的其他选项是扩展String.prototype并自己添加一个方法,例如:
if (!String.prototype.trim) {
String.prototype.trim = (function () {
var re, ret;
re = /^\s+|\s+$/g;
ret = function () {
return this.replace(re, "");
};
return ret;
}());
}这样你就可以保留你的原始代码了。如果使用此方法,请确保在有问题的代码之前执行它。
或者接受这些代码并使其成为您可以像$.trim()那样调用的函数。我个人喜欢使用jQuery的函数或我自己的函数(而不是扩展原型)。在实际值为null或undefined...then的情况下,它将引发错误。$.trim帐户(以及用户定义的函数可以)
参考文献:
String.prototype.trim兼容性:http://kangax.github.io/es5-compat-table/#String.prototype.trim$.trim():http://kangax.github.io/es5-compat-table/#String.prototype.trimhttps://stackoverflow.com/questions/21565709
复制相似问题