2011-03-01 50 views
4

在我的頁面上,JavaScript在頁面加載時添加了很多類(取決於頁面)。 我該如何等待直到JavaScript已經添加了這些類,然後使用Javascript或PHP從不同的文件獲取HTML?如何使用PHP檢索頁面源代碼(在javascript運行之後)?

+0

Firefox的網頁開發工具應該能夠做到這一點: http://stackoverflow.com/questions/5301554/is-page-source-before-or-after-javascript-has-been-rendered – Evans 2011-08-01 15:57:07

回答

1

它看起來像你需要的是Firebug。如果您使用Google Chrome,則還可以使用Google Chrome Developer Tools

這些工具將允許您查看頁面的實時DOM,並跟蹤您的JavaScript所做的任何更改。像這些工具對於我們來說是開發人員必不可少

1

在您的頁面上,您不能通過JavaScript以外的其他資源接收呈現的HTML源代碼。在JS完成HTML中的所有內容更改後,可以將HTML源發佈到服務器上的PHP並保存。

僞代碼:

// JavaScript using jQuery 
setTimeout("jQuery.post('/catch.php', jQuery(document));", 2000); 

// on the server side create a catch.php file 
<?php 
file_put_contents('./tmp.txt', 'php://input'); 
0

你不能,很容易。

JavaScript修改內存中的DOM。這是與您最初發送給瀏覽器的「源」完全獨立的實體。

您可以做的最接近的事情是通過JS構建DOM的XML表示並通過AJAX將其發送回服務器。爲什麼你想要/需要這樣做超出了我。

2

頁面加載完成後,使用Ajax將呈現的源發回PHP腳本。

$(function() 
{ 
    var data = $('body').html(); 
    $.post('/path/to/php/script', data); 
}); 

(這個例子假設你正在使用jQuery)

+0

感謝這麼多,到底我在找什麼。我將創建臨時的'PHP文件並將用戶發送到這些文件。 – 2011-03-01 17:18:15

0

打開書籤/收藏夾,並創建一個新的這個,然後點擊你的頁面加載後:

javascript:IHtml=document.documentElement.innerHTML; 
LThan=String.fromCharCode(60); 
LT=new RegExp(LThan,'g'); 
IHtml=IHtml.replace(LT,'&lt;'); 
IHtml=IHtml.replace(/ /g,'&nbsp; ');Out ='';Out+='<!DOCTYPE html PUBLIC "-\/\/W3C\/\/DTD XHTML 1.0 Transitional\/\/EN"';Out+=' "http:\/\/www.w3.org\/TR\/xhtml1\/DTD\/xhtml1-transitional.dtd">'; 
Out+='<html xmlns="http:\/\/www.w3.org\/1999\/xhtml" xml:lang="en-US" lang="en-US">'; 
Out+='<head><title>Inner HTML<\/title><\/head>'; 
Out+='<body style="color:black;background-color:#ffffee;">'; 
Out+='Body HTML:<br \/><ul>'; 
NLine=String.fromCharCode(10); 
ILines=IHtml.split(NLine); 
for (ix1=0; ix1< ILines.length; ix1++) { 
    Out+='<li>'+ILines[ix1]+'<\/li>'; 
} 
Out+='<\/ul>'; 
Out+='&nbsp;&nbsp;[<a href="javascript:void(0);" onclick="window.close();" title="close">Close<\/a>]'; 
Out+='<\/body><\/html>\n'; 
PopUp1=window.open('','IHTML'); 
PopUp1.document.write(Out); 
PopUp1.document.close(); 
相關問題