Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 滚动包含来自不同域的页面的iframe_Javascript_Jquery_Iframe_Cross Domain - Fatal编程技术网

Javascript 滚动包含来自不同域的页面的iframe

Javascript 滚动包含来自不同域的页面的iframe,javascript,jquery,iframe,cross-domain,Javascript,Jquery,Iframe,Cross Domain,我目前正在开发clicktail克隆。我已经记录了所有的鼠标交互和窗口滚动,我的计划是通过打开已记录到iframe中的URL播放它们,然后让鼠标图像移动到捕获的坐标,图像指示单击发生的时间,iframe滚动到捕获的滚动位置 当我在iframe中查看来自我的域的页面时,这工作得很好,但是当我显示来自不同域的页面时,我从FF控制台收到拒绝访问错误,从IE收到相同的问题 这是由于JavaScript的同源策略造成的 我一直在读这篇文章-> 这似乎正在成为许多开发人员的一个问题,并且有黑客绕过它 有人能

我目前正在开发clicktail克隆。我已经记录了所有的鼠标交互和窗口滚动,我的计划是通过打开已记录到iframe中的URL播放它们,然后让鼠标图像移动到捕获的坐标,图像指示单击发生的时间,iframe滚动到捕获的滚动位置

当我在iframe中查看来自我的域的页面时,这工作得很好,但是当我显示来自不同域的页面时,我从FF控制台收到拒绝访问错误,从IE收到相同的问题

这是由于JavaScript的同源策略造成的

我一直在读这篇文章->

这似乎正在成为许多开发人员的一个问题,并且有黑客绕过它


有人能为我的情况推荐一个合适的黑客吗?

你总是可以假装。也许你可以把iframe放在一个容器div中(css:
overflow:hidden;height:/*some height*/
),将iframe元素设置为页面的全高,然后滚动div?

你可以在你的域上使用一个PHP代理,它(a)将目标URL读取为字符串,(b)添加一个
base
标记,这样图像,链接等正常工作,然后(c)打印字符串

最终结果是一个与外部域中的页面相同但托管在您的域中的页面。这意味着您可以从父帧在子帧中执行JavaScript

代理的代码如下所示:

<?php
    ini_set("user_agent", $_SERVER['HTTP_USER_AGENT']); // temporarily override CURLs user agent with the user's own

    $page = file_get_contents($_REQUEST["www"]);
    $page = preg_replace("/<[\s]*head[^>]*>/i", "<head><base href='".$_REQUEST["www"]."' /><base target='_blank' />", $page);
    echo $page;
?>