您可以使用phantomjs實現這一
這裏是幻象JS服務器代碼的代碼片段。
var system = require('system');
var url = system.args[1] || '';
if(url.length > 0) {
var page = require('webpage').create();
page.open(url, function (status) {
if (status == 'success') {
var delay, checker = (function() {
var html = page.evaluate(function() {
var body = document.getElementsByTagName('body')[0];
if(body.getAttribute('data-status') == 'ready') {
return document.getElementsByTagName('html')[0].outerHTML;
}
});
if(html) {
clearTimeout(delay);
console.log(html);
phantom.exit();
}
});
delay = setInterval(checker, 100);
}
});
}
上的HTML
使用「數據狀態」屬性,讓phantomjs知道什麼時候該頁面已準備就緒如果HTML是屬於你的。如果html頁面不屬於你,另一個選擇是使用一個很好的超時。
這不回答這個問題。你如何獲得iframe的來源?另外,等待「頁面準備好」是不必要的,因爲只有當頁面準備就緒時才調用'page.open'回調。 – 2015-01-21 13:07:31
您可以獲取iframe從html變量指向的Url,然後使用它加載並打開該頁面,然後使用url和page.open()再次在iframes url上獲取iframes內容,然後替換包含所有html的html變量中的整個iframe標籤,你是否希望我爲你編碼?也許打開小提琴? – wauk 2015-01-21 13:22:18
你似乎有一個不錯的主意。您可以將其添加到您的答案(在這一點上,我刪除downvote),並可能通過添加代碼來支持這一點(如果它是正確的,我會加註)。 – 2015-01-21 13:26:35