2009-03-22 8 views
0

だから、有用なjavascriptと組み合わせた(価値のない)htmlを持つリモートページからいくつかのjavascritを取り出す必要があります。ページ、それを呼び出す、http://remote.com/data.htmlは、この(クレイジー私が知っている)のようなものになります。javascriptをhtmlと混ぜてロードする方法

<html> 
<body> 
<img src="/images/a.gif" /> 
<div>blah blah blah</div><br/><br/> 
var data = { date: "2009-03-15", data: "Some Data Here" }; 

</body> 
</html> 

そうに、私は私の地元のページでこのデータ変数をロードし、それを使用する必要があります。

私は完全にクライアント側のコードでそうすることをお勧めします。私は、このページのHTMLをローカルのjavascript変数に渡すことができたら、JavaScriptコードを解析し、evalを実行してデータを使用することができます。だから私は、iframeにリモートページをロードすると思ったが、私はDOM内のiframeを見つけることができないようだ。どうしてですか?:

最初のアラートは0を示し、2番目のヌルは意味をなさないものです。この問題を回避するにはどうすればよいですか?

+0

あなたが望むものを慎重に - 成功すれば、ページの文脈で信頼できないコードが実行されることになります(あなたのコントロール下にない場合は、いつでも変更できます)。ドライブバイマルウェア、誰ですか? – Piskvor

+0

もちろん、アラートは0とnullを表示します...スクリプトが実行されているときにiframeがまだ存在しません...スクリプトタグをiframe要素の下に置きます。 – James

答えて

2

注文を交換しようとしましたか?iframeを先に、スクリプトを次に送りますか?スクリプトはiframeがDOMに挿入される前に実行されます。

はまた、これは、似たような状況で私のために働いていた:はiframeにonloadイベントハンドラを与える:少なくとも

<iframe src="http://example.com/blah" onload="do_some_stuff_with_the_iframe()"></iframe> 

最後になりましたが、クロスサイトスクリプティングの問題に注意を払う - インラインフレームをロードすることができ、あなたのJSはそれにアクセスできないかもしれません。

+0

onload()を使用していましたが、今はxssの問題に走っている。私はいくつかの種類のサーバー側のソリューションを使用しなければならないと思う。 –

0

XMLHttpRequestを使用してページを取得することもできますが、現在のところクロスサイトリクエストに対してのみ実装されているのはapparentlyです。

クライアントのインターネット接続を使用して(セキュリティ上または法律上の理由から)htmlページを取得するツールを作成して、正当な希望であると思われることをご理解ください。

サーバ側で処理する必要がある場合は、urlをクエリとして受け取り、スクリプトを含むjsonチャンクを文字列に返す単純なPHPページを作成する必要があります。そうすれば、特定のWebサイトを除外する必要がある場合は、1つの場所でのみ行う必要があります。

避けられない問題は、ユーザーの一部が敵対的になり、実際にJavaScriptプロキシであるものを悪用するライセンスがあることです。その結果、最も安全なオプションは、サーバー上のすべての処理を行い、特定のjavascript関数呼び出し(eval、http要求など)を許可しないことがあります。

関連する問題