Ich arbeite an einem Framework und möchte Phantomjs unterstützen. Gibt es eine Möglichkeit zu überprüfen, ob die Seite JavaScript unter phantomjs oder karma + phantomjs läuft? Ich habe nur mit Karma + Phantomjs getestet, aber ich habe keine globale Variable gefunden, die ich verwenden könnte, um die Umgebung zu überprüfen. Ich dachte, dass es eine globale.phantom Variable oder etwas Ähnliches geben wird. Gibt es einen Unterschied zwischen diesen Umgebungen?Gibt es eine Möglichkeit zu überprüfen, ob mein Skript in phantomjs läuft?
Antwort
Nach diesem Artikel: http://laputa.io/blog/2014/10/24/using-karma/ Karma läuft in iframe und so Phantomjs Variablen sind nicht in diesem iframe vorhanden. Alles, was wir tun müssen, ist, iframe durch Karma auszuschalten. Um dies zu tun, müssen wir die folgenden Einstellungen verwenden:
config.set({
client: {
useIframe: false
}
});
Jetzt können wir einfach !!window._phantom
oder !!window.callPhantom
verwenden zu prüfen, ob Phantom vorhanden ist. Dies ist jedoch eine Teillösung. Ich bin immer noch auf der Suche nach einem besseren, der sogar in einem iframe Phantom sehen kann.
endete ich mit einem Code wie folgt auf:
var global = (function() {
return this;
})();
var phantom = global._phantom;
if (!phantom && global.__karma__ && global.frameElement)
phantom = global.parent._phantom;
var isPhantom = !!phantom;
Dies funktioniert sowohl von Iframes und nicht-Iframes, Karma und ich denke, es ist von Vanille PhantomJS wie gut funktioniert.
War nicht '!! window.callPhantom == true' vor der Einstellung' useIframe: false'? –
@ArtjomB. Es war "undefiniert". Eigentlich war diese Eigenschaft nicht vorhanden, also wurde sie nicht definiert undefiniert. : D – inf3rno
[diese Frage] (http://Stackoverflow.com/a/24471222/13226) und [diese Frage] (http://stackoverflow.com/questions/26186101/how-to-skip-the-code- execution-from-phantomjs-or-grover) könnte helfen – ebo
@ebo Nein, aber ich habe eine Lösung gefunden. :-) http://laputa.io/blog/2014/10/24/using-karma/ – inf3rno
@ArtjomB. Ja. ------------------------ – inf3rno