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