2

私はOpera用のユーザーJSを書いています。拡張子がないリクエスト、/stuff/code/MyFileたとえばJavaScriptに関連しないリクエストに反応します/stuff/code/load.do。応答のcontent-typeは、text/html純粋なJavaScriptソース(text/javascript)を返しますが、に設定されます。私はサーバーコードにアクセスできないので、これを使用する必要があります。

ここでの問題は、ソースを行番号などでフォーマットして、Opera内に表示したいということです。したがって、私は反応するためにいくつかのユーザーJSを作成しましたAfterEvent.DOMContentLoaded(これも試してみましたAfterEvent.load、同じことです)。e.event.target.body.innerHTML本体、つまりJavaScriptコードにアクセスするために読み取ります。

ソースにHTMLタグまたは比較演算子(<、>)が含まれていない場合は、それだけでもうまく機能します。そうなので、私は望む出力を得ることができません。text/htmlOperaには、 -responseを独自の表現形式に変換するための内部ロジックがあるようです。これには、たとえば、HTMLタグが削除された後のCRLFや、2つの「一致する」<と>(比較演算子!)の間のコードが1行にまとめられ=""、そこにある各単語の後に適用されることが含まれます。

そして、そこに問題があります。

ユーザーJSなしで同じURLをリクエストし、「ページ」のソースを見ると、サーバーが送信したものと同じクリーンなJavaScriptコードが表示されます。そして、これは私がアクセスしたいものです。

innerTextの代わりにを使用するとinnerHTML、OperaはHTMLタグを削除して、ファイルを元のファイルとは異なるものにします。

outerHTML、、も見てみましouterTexttextContentが、どれも同じ問題です。

Operaはここで何も悪いことをしていないことを私は知っています。サーバーはそれがaであると言い、Operaは通常のような応答text/htmlで通常行うことを実行します。text/html

したがって、私の質問は次のとおりです。ユーザー-JSで手つかずの応答を取得する方法はありますか?

4

1 に答える 1

0

JSから事前に解析されたマークアップにアクセスする方法はありません。そのための唯一の方法は、XMLHttpRequestを使用してコンテンツを自分でリクエストすることです。

于 2010-12-22T12:22:50.393 に答える