2016-08-25 60 views
0

開了源代碼,我想通過window.open()如何從webside通過window.open

我的代碼從網站獲得源代碼非常簡單:

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

alert(myWindow.document.body.innerHTML); 

而且我不知道爲什麼警報是空白的。 你能幫我嗎? 問候

+1

聽起來像是你需要通過AJAX來做到這一點。你究竟想在這裏做什麼? –

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

結果:http://jsfiddle.net/JRqTy/606/

+0

爲什麼'setTimeout'? – SirPython

+0

@SirPython爲了讓其他窗口有時間加載頁面。但是你的'onload'方法更好。 – Barmar

+0

@Barmar它的正確! :) – CMedina