6
  • Java6 サーバーで Javascript を実行したいと考えています。つまり、javax.script API、具体的には Rhino Script Engine を使用しています。(別の解決策も受け入れられますが)
  • スクリプト ファイルはサード パーティによって作成およびサポートされているため、時間の経過とともに変更された場合に備えて、ダウンロードして編集したくありません。
  • スクリプトは、Rhino がサポートしていないように見える「ウィンドウ」オブジェクト (およびおそらく「ドキュメント」オブジェクトなど) を直接参照します。

私はこれを行うことができますか?

4

2 に答える 2

6
var window = {}
var document = {}

...もちろん、スクリプトがアクセスしようとしているプロパティを入力しない限り、あまり役に立ちません。

標準のブラウザー API を単純に入力することはできません。ほとんどの API は、ブラウザーのコンテキストの外では意味がありません。

于 2009-06-08T11:22:59.837 に答える
6

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

Rhino は ECMAScript/JavaScript 1.7 の純粋な実装であるため、HTML ページ、ウィンドウ、およびブラウザ全般については何も知りません。これは汎用スクリプト言語であり、たまたまほとんどが Web ブラウザに組み込まれているため、通常はブラウザが提供するグローバル オブジェクトを使用できます。

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

それが可能であり、サーバーのコンテキストで理にかなっている場合は別の問題です...

于 2009-06-08T11:27:37.067 に答える