有没有替代iframe的方法?

时间:2011-05-07 21:46:43

标签: php javascript iframe

我刚遇到一个重要的问题,因为我有很多来自其他域的来源,这意味着如果我使用iframe,我必须调整所有这些内容。但问题是我无法修改或插入源代码网页的代码。 因为这些,我想问一下是否有其他解决方案可以跳过使用iframe? 提示:我需要从网址中获取整个内容(包括图片,css等)。不属于内容。

5 个答案:

答案 0 :(得分:1)

PHP的include功能可能是最好的起点。它只是您无法更改的标记,还是您能够使用PHP和JavaScript?

编辑:

尝试使用include('http://www.google.com')在您的网页中添加网址,而不使用iFrame。代码中的任何非绝对目录引用(如<img src='/img.png'>)都不会正确显示或加载。

如果您需要修复这些引用并且无法更改标记本身,可以使用file_get_contents函数并修改如下内容:

$page = file_get_contents('http://www.google.com');
$page = preg_replace('/(href|src)=([\'"])\//',"$1=$2http://google.com/",$page);
echo $page;

答案 1 :(得分:1)

快速的想法 - 您可以尝试在服务器端编写代理并在iframe中提供内容,但src指向代理页而不是真实页(即使用传递的参数控制)

答案 2 :(得分:0)

使用JSONP数据类型进行AJAX调用以返回其他页面的内容。您需要对两个域上的代码进行修改才能使其工作。 http://en.wikipedia.org/wiki/JSONP

答案 3 :(得分:0)

修改了@beanland的答案,我的 /proxy.php 文件,缓存:

$host = parse_url($_GET['url'], PHP_URL_HOST);
$dir  = $_SERVER[DOCUMENT_ROOT].'/cache_proxy/'.$host;
if(!is_dir($dir))
    mkdir($dir);
$filepath = $dir.'/'.md5($_GET['url']);

if(is_file($filepath)){
    include($filepath);

}else{
    $page = file_get_contents($_GET['url']);

    $page = preg_replace('/(a href)=[\'\"](http.*)[\'\"]/', '$1="http://buy/proxy.php?url=$2"', $page);
    $page = preg_replace('/(a href)=[\'"][^http](.*)[\'"]/', '$1="http://buy/proxy.php?url=http://'.$host.'/$2"', $page);
    $page = preg_replace('/(href|src)=[\'"][^http+](.*)[\'"]/', '$1="http://'.$host.'/$2"', $page);

    file_put_contents($filepath, $page);

    echo $page;
}

首先替换代理的所有<a href="">个链接,然后将所有相对<img src="/path...">等替换为绝对<img src="http://...">

答案 4 :(得分:-1)

jQuery加载到div http://api.jquery.com/load/