• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:別サイトのinnerHTMLをコピーしたい)

別サイトのinnerHTMLをコピーする方法はある?

このQ&Aのポイント
  • 別サイトのinnerHTMLをコピーする方法について知りたいです。アクセス拒否される場合はどうすればいいのでしょうか?
  • 親フレームのHTMLから別サイトのinnerHTMLを取得しようとしていますが、うまくいきません。解決策があれば教えてください。
  • copy.htmlのコードを使って別サイトのHTMLソースをコピーしようとしていますが、うまくいかないです。どなたか知恵をお貸しください。

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

  • ベストアンサー
回答No.1

かなり昔のブラウザーですと、普通にドメインを超えた内容でも 普通にコピーできるのですが、 今ではできなくなってしましたね。 またX-FRAMES-OPTIONという、フィッシング詐欺防止機能も 働いて、更にできにくくなっています。 (これは、googleをフレームの中に入れれば、わかります) http://www.jpcert.or.jp/ed/2009/ed090001.pdf というわけで、今回は、JavaScript内で、frame内に表示することは できても(もしくはできていなくても)コピーすることが目的ですので JavaScriptで httpアクセスをしてしまえばよいかと考えます。 以下、実際に運用しているコードですが、バグがります。ごめんなさい。 (上2つ、コメントにしてあるので、必要であれば試してみてください) 1つ目のオプションはURL、2つ目のオプションは代入先のフォーム 3つ目の変数(あるもの)は、GET後に呼び出す関数の指定です。 example fetch(url, getid("tmp"), reload); <input type="hidden" name="tmp" /> の中にHTMLが入りますので、加工してみてください。 /* * HTTP リクエスト */ var t=2; /* HTTPタイムアウト */ /* function fetch (url, node) { var xhr = ''; if (window.XDomainRequest) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); xhr.open("GET", url, false); } else { xhr = new XMLHttpRequest(); xhr.open('GET', url, false); } xhr.send(null); node.innerHTML = xhr.responseText; } */ /* function fetch (url, node, func) { var xhr = httpreq(); if(xhr != n) { xhr.open("GET", url, false); xhr.send(n); if(node != n) { node.innerHTML = xhr.responseText; o.method=func; o.method(); } } } */ function fetch (url, node, func) { var xhr = httpreq(); var stat=0; if(xhr != n) { xhr.open("GET", url, true); o.method = func; v = node; f = xhr; xhr.onreadystatechange = function() { if(f.readyState == 4 && f.status == 200) { if(v != n) { v.innerHTML = f.responseText; if(o.method != n) { o.method(); } } } } xhr.send(n); } if(node != n) node.innerHTML = ""; } function httpreq() { var xmlHttpObj = n;   if(window.ActiveXObject && !window.XMLHttpRequest) { window.XMLHttpRequest = function() { try { return (new ActiveXObject('Msxml2:XMLHTTP')); } catch (e) {} try { return (new ActiveXObject('Microsoft.XMLHTTP')); } catch (e) {} return n; } } try { xmlHttpObj = new XMLHttpRequest(); } catch (e) {} return xmlHttpObj; }

system0001
質問者

お礼

ymdaさん innerHTMLの取得ができました^^ ご教授ありがとうございました。

関連するQ&A

専門家に質問してみよう