• ベストアンサー

別のサイトのHTMLファイルの内容によって表示を変更したい

JavaScript初心者でございます。おかしなことを言っていたらすみません。 現在、別のサイトに存在するページの内容によって、自分の作ったページを上の表示内容を制御することはできるかを検討しております。 例えば、地震が発生したら、その情報が書き込まれるようなサイト(気象庁等)のページのある部分に“地震”という文字列が表示されることが分かっている場合、自ページを開いたときに、別サイト上のページ内容をJavaScriptで取得し解析して、地震があったら、自ページ内「地震有り!」と表示するようなことを考えています。 (Webで調べてみたのですが、XMLHttpRequest でデータを取得後、パース処理し、その結果に基づき、HTMLの表示を変えることができるようなことができるのではという内容を見つけたのですが、実現方法(それ以前に実現性)が分かりませんでした。) まずは、HTML上のJavaScriptだけ(サーバ上のプログラムを用いず)このようなことが可能なのか、またその方法はどのようにすればよいかをお教えいただきたく存じます。 以上です。

質問者が選んだベストアンサー

  • ベストアンサー
  • guineness
  • ベストアンサー率36% (14/38)
回答No.1

JavaScriptのみで可能です。 と思い調べてみたら、 XMLHttpRequestはセキュリティ上 同じドメインしか通信できないみたいでした。 開いたHPが勝手にどこかのページと通信しだしたら セキュリティホールですね。 できないと考えるべきでしょう。

noname#17384
質問者

お礼

ありがとうございました。 XMLHttpRequestは同じドメインしか通信できないんですね。勉強になりました。 先程サンプルスクリプトを作成し、自サイトは、データ取得できたのですが、他のサイトにアクセスした際、うまくうごかなかったのでおかしいとおもっていたのですが、この仕様のせいだったんですね。納得しました。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

既に指摘されていますが、別サイトの内容にjavascript からアクセスができないです。 IEを利用している場合でActiveX が許可されているのであれば、 以下のような感じで取得できました。 window.onload=function(){ var IE = new ActiveXObject("InternetExplorer.Application"); IE.Navigate ("http://www.jma.go.jp/jp/quake/") while(IE.busy); while(IE.Document.readyState !="complete"); document.getElementById("QuakeInfo").innerHTML=IE.Document.getElementById("infobox").innerHTML; IE.Quit(); }; //--> </script> … <div id="QuakeInfo" style="border:solid 1px black"></div>

noname#17384
質問者

お礼

ありがとうございます。 IE&ActiveX限定とはいえ、実施できそうな仕組みがありとてもうれしいです。(私の環境でもうまく動きました。)

noname#22259
noname#22259
回答No.2

JSON

noname#17384
質問者

お礼

ありがとうございます。 JSON(初めて聞いて今調べていましたが)を利用した場合、自ドメイン以外のページ内のデータをJavaScriptで取得可能なのでしょうか?調べてみましたが、その部分が分かりませんでした。もしご存知であればお教えいただけませんでしょうか。

関連するQ&A