有没有办法检查我的脚本是否在phantomjs中运行?

时间:2016-08-01 17:47:50

标签: javascript phantomjs karma-runner

我正在研究一个框架,我想支持phantomjs。有没有办法检查页面JavaScript是否在phantomjs或karma + phantomjs下运行?我只测试了karma + phantomjs,但是我没有找到任何我可以用来检查环境的全局变量。我以为会有一个global.phantom变量或类似的东西。这些环境之间有区别吗?

1 个答案:

答案 0 :(得分:3)

根据这篇文章:http://laputa.io/blog/2014/10/24/using-karma/ Karma在iframe中运行,因此此iframe中不存在phantomjs变量。所以我们所要做的就是通过业力来关闭iframe。为此,我们必须使用以下设置:

config.set({
    client: {
        useIframe: false
    }
});

现在我们只需使用!!window._phantom!!window.callPhantom来检查是否存在幻像。然而,这是部分解决方案。我仍在寻找一个更好的,即使在iframe中也可以看到幻像。

我最终得到了这样的代码:

var global = (function () {
    return this;
})();
var phantom = global._phantom;
if (!phantom && global.__karma__ && global.frameElement)
    phantom = global.parent._phantom;
var isPhantom = !!phantom;

这既适用于iframed也适用于非iframed Karma,我猜它也适用于vanilla phantomjs。