2016-08-25 1 views
0

geöffnet bekommen Ich mag würde Quellcode von der Website von window.open()Wie ein Quellcode von Webside von window.open

Mein CODE ist sehr einfach zu bekommen:

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

alert(myWindow.document.body.innerHTML); 

Und Ich weiß nicht, warum die Warnung leer ist. Können Sie mir helfen? Grüße

+1

Klingt wie Sie dies über AJAX müssen tun. Was genau versuchst du hier zu machen? –

+0

'innerHTML' ist nicht dasselbe wie der Quellcode, weil 'innerHTML' alle Änderungen enthält, die von den Skripten programmgesteuert durchgeführt werden (entfernte und hinzugefügte Elemente). Sie möchten Quellcode oder die DOM-Baumstruktur bekommen? – jcbp

+0

Hast du einen Pop-up-Blocker? – Robin

Antwort

0

Um den JavaScript-Quellcode von einer Website, die Sie mit window.open geöffnet, können Sie etwas tun könnten:

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

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

Allerdings funktioniert dies nur für Inline-Scripts; Für Skriptreferenzen müssten Sie diese Seiten ebenfalls öffnen und deren Text lesen. Das oder Sie könnten wahrscheinlich eine GET-Anfrage an sie senden.

Wie für Ihre Warnung vor leer ist, könnte es für einen oder beide von zwei Gründen, die ich denke:

  • Du benimmst auf myWindow zu früh. Das von window.open zurückgegebene Fenster hat nicht sofort ein bereites DOM für Sie. Sie müssen also möglicherweise warten, bis das Fenster geladen wird, indem Sie onload oder etwas Ähnliches verwenden, bevor Sie versuchen, den Body HTML zu lesen.
  • Die Webseite, die Sie besuchen, enthält kein HTML.
+0

Vielen Dank! – Star089

0

diesen Code Versuchen:

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); 
} 

Ergebnis:http://jsfiddle.net/JRqTy/606/

+0

Warum das 'setTimeout'? – SirPython

+0

@SirPython Damit das andere Fenster Zeit hat, die Seite zu laden. Aber deine Methode mit 'onload' ist besser. – Barmar

+0

@Barmar ist korrekt! :) – CMedina