Ich habe Probleme bei der Auswertung einer script.js-Datei, die von prototype.js abhängig ist. Wenn ich versuche, die Datei script.js über die Rhino Script Engine in Java auszuwerten, erhalte ich eine Script Exception wie "TypeError: $H is not a function, it is java.lang.String.". Wie kann ich die Dateien auswerten und wie kann ich prototype.js einbinden und die Prototyp-Objekte definieren?
Antworten
Zu viele Anzeigen?Sie können prototype.js nicht nur mit Rhino auswerten. prototype.js hat viele Verweise auf das HTML DOM, das in Rhino/Java nicht implementiert ist. Zum Beispiel (aus prototype.js): document.createTextNode('') Das globale Objekt document ist im Rhino-Kontext nicht definiert und createTextNode ist ebenfalls nicht definiert.
Die Lösung ist, alle Objekte/Funktionen aus Ihrer Kopie von prototype.js zu entfernen, die auf die Objekte document, window oder navigator verweisen. (vorausgesetzt, Ihre js-Datei verwendet sie nicht)
Werfen Sie einen Blick auf env-js die eine Mock-Browser-Umgebung für Rhino ist. Sie basiert auf einige Arbeiten von John Resig um JQuery in Rhino zum Laufen zu bringen. Es würde mich nicht überraschen, wenn Prototype auch funktioniert.