从其他域访问iframe内容

时间:2015-07-13 06:56:06

标签: javascript jquery html iframe same-origin-policy

是否有任何可能的解决方法来获取包含来自另一个域的内容的iframe的html并根据它包含的内容对JS / jQuery执行某些操作?由于相同的原始策略,AFAIK浏览器会隐藏该内容,因此我不能直接访问它。

1 个答案:

答案 0 :(得分:0)

如果您不希望通过iFrame包含整个插件,iFrame已经使用了大量脚本,并且该网站更像是一个包含当地体育俱乐部或其他人的结果的表格#34;只读# 34;信息,您可以使用 php file_get_contents()导入iframe 。现在,您可以对其内容进行样式化并通过jQuery进行定位。

例如,您有以下标记:

<html>
<!-- Some Head and Body parts, like navigation, sidebar, etc. -->
<div id="results">
<!-- Lots of results -->
</div>
</html>

您可以定位id="result以确定要导入的部分的开头。

所以我们定义你的目标:

$host = 'http://sportclub.de/results.html';

并导入他:

$filestring = file_get_contents($host);

由于您不想导入整个网址,因此需要设置起点和终点。为了给你一个基本的想法,这是一个代码,它的工作方式与上面提到的概念类似:

<?php
$host = 'http://sportclub.de/results.html';
$filestring = file_get_contents($host);

$startpos = 0; //erstes Zeichen
while($pos = strpos($filestring, "<div id=\"results\"", $startpos))
{
    $string = substr($filestring, $pos, strpos($filestring, "</div>", $pos + 1) - $pos);
    echo $string."</div>";
    $startpos = $pos + 1;
}
$string = preg_replace("/(^¦\s)(http:\/\/)?(www\.)?[\.0-9a-zA-Z\-_~]+\.(com¦net¦org¦info¦name¦biz¦.+\.\w\w)((\/)?[0-9a-zA-Z\.\-_~#]+)?\b/ie","",$string);
?>