Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 小于1.4 string.trim()ie8崩溃_Javascript_Css_Less - Fatal编程技术网

Javascript 小于1.4 string.trim()ie8崩溃

Javascript 小于1.4 string.trim()ie8崩溃,javascript,css,less,Javascript,Css,Less,我在本地环境上使用更少的.js。我对IE8+less.js(1.4.1)+es5-shim.js有一个问题。当我包括es5时,本机ie8崩溃。我检查并做了一些测试,这是因为less.js中使用了string.trim()函数。当我修改trim函数以返回未修剪的字符串时,ie8并没有崩溃,但现在脚本无法识别mixin等。也许有人对此有什么解决方案 如果使用es5垫片的唯一目的是修剪多边形填充,则可以尝试不使用es5垫片,并包括此备用多边形填充,然后查看其是否有效 ''.trim||(String.

我在本地环境上使用更少的.js。我对IE8+less.js(1.4.1)+es5-shim.js有一个问题。当我包括es5时,本机ie8崩溃。我检查并做了一些测试,这是因为less.js中使用了string.trim()函数。当我修改trim函数以返回未修剪的字符串时,ie8并没有崩溃,但现在脚本无法识别mixin等。也许有人对此有什么解决方案

如果使用es5垫片的唯一目的是修剪多边形填充,则可以尝试不使用es5垫片,并包括此备用多边形填充,然后查看其是否有效

''.trim||(String.prototype.trim=function(){return this.replace(/^[\s\uFEFF]+|[\s\uFEFF]+$/g,'')});
也就是说,我目前使用的是
String.trim()

若要比较实现,我正在运行的版本有以下代码

// ES5 15.5.4.20
// http://es5.github.com/#x15.5.4.20
var ws = "\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003" +
    "\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028" +
    "\u2029\uFEFF";
if (!String.prototype.trim || ws.trim()) {
    // http://blog.stevenlevithan.com/archives/faster-trim-javascript
    // http://perfectionkills.com/whitespace-deviations/
    ws = "[" + ws + "]";
    var trimBeginRegexp = new RegExp("^" + ws + ws + "*"),
        trimEndRegexp = new RegExp(ws + ws + "*$");
    String.prototype.trim = function trim() {
        if (this === void 0 || this === null) {
            throw new TypeError("can't convert "+this+" to object");
        }
        return String(this)
            .replace(trimBeginRegexp, "")
            .replace(trimEndRegexp, "");
    };
}

尝试手动添加polyfill,并用es5-shim.jsI归档一个bug。我尝试了很多示例,甚至jQuery等。它仍然崩溃:)您是否在es5-shim.js之前添加了polyfill?如果您发布了来自ie8的实际错误消息,这将非常有用。您可能遇到了一个正则表达式错误。通常我是在修改es5垫片字符串的源代码。trim():)。诀窍是我不知道;我的意思是,有一个弹出窗口说ie崩溃了,并发送报告或没有:类似这样的东西:你是否试图在客户端(开发者模式)上减少ie8的使用?他们的网站说,他们只支持ie8不支持的现代浏览器。我使用的是你购买并升级到1.4.2版本的trim-taht,它仍然崩溃。。。但是只有在本机IE8Ah上,好的,我使用IE10并将标准模式设置为IE8,以便在dev中进行初步测试,最初这会导致一个问题,但在包含es5-sham.js之后就不会了。一旦我完成了开发并进行了兼容性测试,我会在测试本机IE8之前将less编译为CSS(在我的例子中,使用msbuild步骤和less dot net,因为我正在处理MS堆栈)。您是否尝试过使用替代垫片代替es5?有兴趣知道它是否有帮助(String.prototype.trim=function(){返回这个.replace(/^[\s\uFEFF]+|[\s\uFEFF]+$/g,”))?我也试过这个polyfill:)。。。我试图找到es5垫片的替代品,但我找不到任何东西。。。也许你可以给我一个提示?我使用了IE8的测试虚拟机(可从modern.ie下载)。因此,它是一台运行标准IE8的标准XP机器。我使用es5 shim使最简单的测试运行得更少,并且可以正常工作。所以我开始认为这个问题可能是在一些环境比赛条件下-你有没有用一个非常简单的例子来尝试这个问题?这里有一个要点供您尝试,如果背景是黄色,less在IE8和es5下使用trim。也许试着把你的文件放进去看看会发生什么。这可能是一些语法上的奇怪之处——您使用的是较少脚本中的高级功能还是基本功能?或者IE对它可以处理的CSS文件的大小有一个限制(正如一些人在这里提到的),如果你的文件很大,它可能会有问题吗?