Ich benutze PhantomJS um eine Webseite zu screenshot. Die Bibliothek ruft jedoch eine gehostete jQuery-Datei auf, um jQuery-Funktionalität in das Seiten-DOM zu injizieren, um einige Manipulationen zuzulassen. Gesehen hier: http://phantomjs.org/api/webpage/method/include-js.htmlPhantomjs verwendet eine lokale Datei mit page.includeJs?
Der Code sieht wie folgt aus:
if (loaded) {
page.includeJs("http://code.jquery.com/jquery-1.8.3.min.js",
function() { . . .
Ich möchte nicht einen externen Anruf für JS machen, weil (a) es ist langsamer und (b) es ist nicht zuverlässig. Ich möchte eine lokale Kopie verwenden und ich setze diesen Weg als solche, aber es wird nicht geladen in.
page.includeJs("assets/javascript/jquery.min.js",
function() { . . .
Was ist das Problem hier? Warum funktioniert mein Weg nicht so, wie ich es erwarte? Erlaubt diese Funktion page.includeJs
relative Pfade nicht?
Versucht injectJs auch. Pfad löst auch nicht auf. Beim Lesen der Dokumente denke ich, dass sie auch subtile Unterschiede haben. – fyz
@fab Ja, es gibt einige Unterschiede, aber es ist die einzige Möglichkeit, lokales Skript auszuführen. Sie liefern wahrscheinlich einen falschen Dateipfad. Versuchen Sie es mit absolutem und sehen Sie, ob es funktioniert. – ghost
Btw 'injectJs' ist nicht korrekt DOCS:" Hinweis: Die Argumente und der Rückgabewert der Funktion evaluate müssen ein einfaches primitives Objekt sein. Die Faustregel: Wenn es über JSON serialisiert werden kann, ist es in Ordnung. Verschlüsse, Funktionen, DOM-Knoten usw. funktionieren nicht! " Siehe Link: http://phantomjs.org/api/webpage/method/inject-js.html – fyz