2016-08-25 11 views
0

によって開かwebsideからソースコードを取得するにはどうすればwindow.open

マイCODE)(window.openによってウェブサイトからソースコードを取得したいのは非常に簡単です:

var myWindow = window.open("http://localhost/test.php?test=7", "myWindow", "width=200,height=100"); 

alert(myWindow.document.body.innerHTML); 

そして、なぜアラートが空白であるのか分かりません。 私を助けることができますか? よろしく

+1

が鳴ります。ここでは正確に何をしようとしていますか? –

+0

'innerHTML'はソースコードと同じではありません。なぜなら、' innerHTML'はスクリプト(削除された要素と追加された要素)によってプログラムによって実行されるすべての変更を含むからです。ソースコードやDOMツリー構造を取得したいですか? – jcbp

+0

ポップアップブロッカーはありますか? – Robin

答えて

0

このようなあなたがwindow.openで開かれたウェブサイトからのjavascriptのソースコードを取得するには、あなたができる何か:しかし

var myWindow = window.open(...); 

myWindow.onload = function() { 
    var scripts = myWindow.getElementsByTagName("script"); 
    // ... get the inner text of each script 
} 

、インラインスクリプトについては、この唯一の作品。スクリプト参照のためには、それらのページも開いてテキストを読む必要があります。それ、またはあなたはおそらく彼らにGET要求を送ることができます。

  • あなたはあまりにも早くmywindowの上で演技している:あなたのアラートのよう

    が空白になっている、それは一つまたは私は考える二つの理由の両方のためである可能性があります。 window.openによって返されたウィンドウにすぐに準備ができたDOMはありません。したがって、本体HTMLを読み取ろうとする前に、onloadなどを使用してウィンドウが読み込まれるまで待たなければならない場合があります。

  • あなたが訪れているウェブページにはHTMLがありません。
+0

ありがとうございました! – Star089

0

このコードを試してみてください。

var myWindow = window.open("http://localhost/test.php?test=7", "myWindow", "width=200,height=100"); 

myWindow.onload = function() { 
    setTimeout(function(){ 
     alert(myWindow.document.documentElement.outerHTML) 
    }, 2000); 
} 

結果:あなたはAJAXを経由してこれを実行する必要があるようhttp://jsfiddle.net/JRqTy/606/

+0

なぜ 'setTimeout'ですか? – SirPython

+0

@SirPython他のウィンドウがページをロードする時間を許可します。しかし、あなたのメソッドは 'onload'で良いです。 – Barmar

+0

@Barmarその正しい! :) – CMedina