我想首先指出,我知道這可能是因爲跨域限制而失敗 - 只是希望確認。Javascript:檢索window.open innerHTML
我有一個窗口,我用javascript打開。然後,我使用Ajax請求來提取站點的內容,並在該窗口中回顯(包括在基礎href鏈接中強制它相對工作)。
的想法是,我可以刮JS渲染HTML,看看該網站是真正運行我們的橫幅或不
我打開窗戶這個(我們有一個懷疑,他們都沒有!):
msaScrape.msaWin = window.open ('null.php', 'msa_weed', "scrollbars=yes,toolbar=no,status=no,width=1000,height=1000");
這將加載新的窗口與目標頁面的內容,並正確地加載和呈現JS燒製的東西(橫幅是IM後)。
我已經試過msaScrape.msaWin.document.body,msaScrape.msaWin.document.body.innerHTML和許多其他許多組合,但沒有人會讓我回到完全呈現的HTML。
當我從Ajax請求的原始緩衝區運行測試時,我可以檢測嵌入的字符串 - 但由於橫幅正在通過JS加載,所以我需要將它們加載到DOM,然後才能搜索HTML橫幅ID。
是我想要做的事情或者我想做的事情不能做到嗎?我覺得奇怪的是,我可以寫入這個彈出窗口,並且我可以掃描(並找到匹配)原始的,未渲染的緩衝區。它一旦我允許彈出頁面呈現掉落的HTML,我就無法獲取源代碼。
如果需要,我可以發佈整個(小)JS位,我試圖做刮和匹配 - 只要與客戶端檢查,如果他們介意我這樣做(其私人客戶端,並不想他們心裏難受)
爲什麼你需要在瀏覽器中做到這一點?它會像預期的那樣失敗。 – Christophe
如果你找回了一些HTML(但不是所有的「呈現」HTML - 記住,它不是呈現給HTML,而是從HTML和JavaScript呈現的表示形式是DOM),那麼它就是*不是*跨域腳本問題。啊,你想得到確認,對吧?我應該將確認作爲答案嗎? – hakre
我想我應該澄清: 我要求一個頁面的PHP,給我原始的HTML代碼,需要執行一些JavaScript來加載橫幅。 我不能只是掃描原始緩衝區 - 它需要由瀏覽器呈現才能看到橫幅。我需要body的innerHTML,以便我可以在請求期間測試其中一個橫幅。 我的問題可以被翻譯爲:如果我將一個遠程頁面的整個輸出加載到一個popupwindow(whos URL是我的網站上的抓取遠程以使域名匹配的php頁面)是否仍會由於跨域協議? –