1

(私の) サーバー上のサーブレットと通信する小さな Greasemonkey スクリプトがあります。サーブレットは JavaScript コードを送り返していますGM_xmlhttpRequest

これまでのところ、すべて正常に動作しています。ここで、そのed コードGM_xmlhttpRequest内からsend another を使用したいと思います。eval()そしてここで私は立ち往生しています。エラーは表示されませんが、すべてのGM_*機能が 内から機能していないようeval(responsetext)です。

GM_xmlhttpRequestonload ハンドラー (no ) でハードコーディングすると、正常にeval()動作します。

4

3 に答える 3

1

Greasemonkey (GM) はユーザー スクリプトをホストしています。つまり、関数とオブジェクトをユーザー スクリプトに追加できます。eval() を呼び出すと、スクリプトはホストされていない状態で実行され (バニラ JavaScript が実行されています)、GM を取得できません。その中のAPI。

于 2009-07-02T13:14:16.023 に答える
0

別の解決策があります。同様の問題があります。すべてのロジックをユーザースクリプトに入れたくないのです。変更した場合、ユーザーが自分でロジックを更新する必要があるためです。ですから、私がやりたいのは、メインロジックをロードロジックから分離することです。メインロジックは、最初にユーザースクリプトによってロードされ、それらを評価します。

そこで、GM_xmlhttpRequest()のラッパーである関数「sendRequest」を作成しました。メソッド、サーバーURL、およびonErrorコールバックはアプリケーションで常に同じであるため、とにかく必要です。これらを「sendRequest」関数に入れるだけです。 xmlhttprequestを単純にするため。

サーバーからロードされるメインロジックのjavascriptコードには、greasemonkey関数呼び出しはまったくありません。たとえばサーバーと通信したい場合は、代わりにsendRequestを呼び出します。できます。

于 2011-12-29T20:17:28.953 に答える