【问题标题】:trim() function doesn't work in IE8?trim() 函数在 IE8 中不起作用?
【发布时间】:2012-06-28 12:03:56
【问题描述】:

每当我在字符串上使用 trim() 函数时,它在 Chrome 和 Firefox 上都能正常工作,但在 IE8 中出现错误提示:

对象不支持该属性或方法

谁能告诉我为什么会发生这种情况以及是否有解决方法?

【问题讨论】:

标签: javascript internet-explorer internet-explorer-8


【解决方案1】:

自从我使用 jQuery 以来,在 @nemo 和 @karesh-a 的帮助下,我想出了:

if(typeof String.prototype.trim !== 'function') {
     String.prototype.trim = function(){
        return jQuery.trim( this );
    }
}

【讨论】:

    【解决方案2】:

    Internet Explorer 仅从版本 9 开始支持 trim()

    作为参考,MDN Polyfill for String.prototype.trim() 是:

    if (!String.prototype.trim) {
      (function() {
        // Make sure we trim BOM and NBSP
        var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
        String.prototype.trim = function() {
          return this.replace(rtrim, '');
        };
      })();
    }
    

    support 是:

    +--------+---------+----+-------+--------+
    | Chrome | Firefox | IE | Opera | Safari |
    +--------+---------+----+-------+--------+
    | All    | 3.5     |  9 | 10.5  |      5 |
    +--------+---------+----+-------+--------+
    

    【讨论】:

      【解决方案3】:

      IE8 不支持修剪功能。 这是一个 polyfill:

      if(typeof String.prototype.trim !== 'function') {
        String.prototype.trim = function() {
          return this.replace(/^\s+|\s+$/g, ''); 
        };
      }
      

      【讨论】:

      • 你能解释一下这段代码 sn-p 是做什么的吗?主要是,这个 if 语句是关于什么的。
      • 这个sn-p首先检查是否定义了trim函数(typeof String.prototype.trim !== 'function')如果没有定义,它定义的函数是一个简单的替换为正则表达式
      【解决方案4】:

      如果你愿意,你可以添加 jquery 并使用 $.trim(....) 这将起作用..

      $.trim("  hello ");
      

      给你

      "hello"
      

      【讨论】:

      • 感谢您的回答 - 非常适合已经使用 jQuery 的网站。
      • 无意冒犯,但我认为只有在我们已经在使用 javascript 时才应该这样做。其他明智的做法是将 jquery 添加到站点仅用于一个功能看起来并不好。上面的解决方案看起来更优雅。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-19
      • 2018-10-04
      • 1970-01-01
      • 2015-12-19
      相关资源
      最近更新 更多