2017-04-27 188 views
0

上次我知道,JavaScript无法获取任意页面的源代码。但PHP可以非常容易。使用PHP获取页面源代码,使用JavaScript进行操作

//get page source code with php 
<?php 

url = 'http://www.thesaurus.com/browse/strong?s=t'; 
$src = file_get_contents($url); 

?> 

PHP并不擅长操纵DOM,但jQuery的因为这是伟大的!

我想这样做

//manipulate source code with javascript 
<script> 
html = '"' + <?php echo $src;?> + '"'; 
listItems = $(html + " li"); 
printLists = ''; 
$.each(listItems, function(ind, el) { 
    printLists += el.innerHTML + "<br/>"; 
}); 

document.write(printLists); 

</script> 

但是,任何时候我赞同$src到脚本标签,它就会立刻解释为HTML和页面变成实际的一张现场嘲弄。

//Actually just shows me [email protected] 
<body> 
    <div id="holder" style="display: none;"></div> 

<script> 
    holder = $("#holder"); 
    nodeNames = []; 
    html = $.parseHTML(<?php echo $src;?>, holder, false); 
</script> 
</body> 

短语“虚拟DOM”听上去不错,但我真的不希望任何复制的源代码,以显示在所有。我只想提取它的某些部分:从控制台运行一个脚本,搜索几个同义词词典网站中的一个术语,获取结果,并将它们保存为由本地叙词表脚本访问的JSON。

我对如何做其他事情有一个牢固的想法,没想到这会是棘手的部分!

关于防止浏览器解析HTML的任何建议?

(我宁愿这只是因为没有浏览器的脚本文件无论如何运行,但遇到了麻烦,在thesaurus.js文件加载jQuery的。)

回答

0

您可以运行PHP脚本获得文件的内容和回声效果到只读/禁用的textarea,然后通过ajax查询该php文件,以在页面上显示生成的textarea。

例如,output.php:

<?php 
    $str = '<p>I am a paragraph.</p>'; 
    echo '<textarea readonly="readonly">'.$str.'</textarea>'; 
?> 

AJAX调用原始文件:

$.ajax({url: 'output.php', success: function(data) { $('#result').html(data); }});