Error.stackTraceLimit 跨浏览器

Error.stackTraceLimit cross-browser

哪些浏览器支持Error.stackTraceLimit,从哪些版本开始?是否有任何替代 API 来限制堆栈跟踪长度?

阿法克。它受 IE10 和当前 V8 支持:Node,Chrome,但我对此了解不多。我想它与错误 API 的其他部分一样是非标准的。我没有找到任何关于在不同浏览器中设置跟踪长度的替代方法。所以我需要有关此功能的更多信息,但我没有找到太多使用 google...

这个题目很难找到相关资料,至少google对我没有帮助,只好写了个简单的测试。

function testStackTraceLimitSupport(){
    Error.stackTraceLimit = 2;

    function firstFunction(){
        secondFunction();
    }
    function secondFunction(){
        thirdFunction();
    }
    function thirdFunction(){
        fourthFunction();
    }
    function fourthFunction(){
        throw new Error("xxxx");
    }

    try {
        firstFunction();
    } catch (error){
        return !/firstFunction/.test(error.stack) 
            && !/secondFunction/.test(error.stack) 
            && /thirdFunction/.test(error.stack) 
            && /fourthFunction/.test(error.stack);
    }
}


console.log("Error.stackTraceLimit support: ", testStackTraceLimitSupport());

据我所知,没有其他方法可以通过 javascript 代码设置跟踪长度限制。如果你想让它更短,你可以做的就是对堆栈进行切片。

我在以下环境中测试了该功能。

  • Node - 在 4.2.1 上测试,支持。我没有找到版本数据,可能它在 Chromium 文档中。
  • Chrome - 在 52.0.2743.116 m 上测试,支持。我没有找到版本数据,可能它在 Chromium 文档中。
  • Firefox - 在 48.0.2 上测试它不受支持。
  • Internet Explorer - 在 11.0.9600.18426 上测试,支持。 IE10+ 和 Edge 也支持它 https://msdn.microsoft.com/en-us/library/s4esdbwz(v=vs.94).aspx .
  • Opera - 在 39.0.2256.71 上测试,支持。我没有为 javascript 开发人员找到任何 Opera 文档。
  • PhantomJS - 在 2.1.1 上测试它不受支持。