我在document.ready函数中有以下语句:
if($("sidebar ").html().trim().length == 0)
{
$("sidebar").append("<p> The sides..</p>");
};
它在IE 9中工作正常但是只要我选择IE 8(浏览器和文档标准),脚本就会停止工作并发出以下错误:
SCRIPT5007: Unable to get value of the property 'trim': object is null or undefined
application-e51c9eee7d22e9644481115dc1fedd5f.js, line 7 character 17578
我在调试模式下查看了.js,看到上面的语句转换为:
$("sidebar ").html().trim().length==0&&$("sidebar").append("<p> The sides..</p>")
如何防止此错误?请注意,我确实看到节点存在于呈现的页面中。
我认为可能只是提到shiv5.html可能不足以照顾IE的特性。所以,我通过sprockets添加了modernizr.js,并在我的布局中添加了class =“no-js”。在IE&lt; 9。
中仍然没有运气我错过了什么?我还能做些什么才能得到微软霸主的青睐?
答案 0 :(得分:5)
根据MDN,trim
在IE中不可用&lt; 9。
您可以改为使用$.trim
:
if($.trim($("sidebar ").html()).length == 0)
{
$("sidebar").append("<p> The sides..</p>");
} // <-- Don't want a semicolon here.
如果您不想查找trim
的所有实例并更正它们,MDN文章会列出另一种选择。如果它本身不可用,您可以使用以下内容创建.trim
:
if(!String.prototype.trim) {
String.prototype.trim = function () {
return this.replace(/^\s+|\s+$/g,'');
};
}
答案 1 :(得分:0)
Check out this thread.经过快速搜索后,似乎很多人都遇到了修剪问题。