2009-06-08 4 views
6
  • Java6サーバー上でJavaスクリプトを実行したいとします。つまり、javax.script API、特にRhino Script Engineを使用します。 (別の解決方法も可能ですが)
  • スクリプトファイルはサードパーティがサポートする&で作成されていますので、時間の経過とともに変更する場合はダウンロードして編集する必要はありません。
  • このスクリプトは、Rhinoが と表示していない 'window'オブジェクト(おそらくは 'ドキュメント'オブジェクトなど)を直接参照し、 をサポートしています。

どうすればいいですか?Java6 Rhinoスクリプトエンジンで実行されているjavascript用の 'window'オブジェクトを作成できますか

答えて

6
var window = {} 
var document = {} 

...もちろん、スクリプトにアクセスしようとしているプロパティを設定しない限り、それほどうまくいきません。

標準のブラウザAPIで読み込むことはできません。そのほとんどはブラウザのコンテキスト外では意味がありません。

6

ウィンドウオブジェクトとドキュメントオブジェクトは、Webブラウザだけで提供され、Rhinoが実装するECMAScript standardの一部ではありません。スクリプトが現在のブラウザウィンドウとHTMLドキュメントにアクセスできるようにします。ドキュメントオブジェクトは、実際にはW3C DOMの実装です。

Rhinoは、ECMAScript/JavaScript 1.7を完全に実装しているため、HTMLページ、ウィンドウ、ブラウザに関する一般的な知識はありません。これはたいていウェブブラウザに埋め込まれた汎用スクリプト言語なので、通常はブラウザが提供するグローバルオブジェクトを使用できます。

"window"と "document"という名前のグローバルにアクセス可能なオブジェクトを定義することはもちろんできますが、何もしないスタブだけですが、実行したいスクリプトはおそらくいくつかのメソッドやプロパティを使用していますこれはあなたの多くを助けることはありません。ブラウザ環境で実行するために作成されたスクリプトを実行するには、完全な "ブラウザ"環境を提供する必要があります。

サーバーのコンテキストでこれが可能であり、意味があるのであれば、別の質問です...

関連する問題