我已经读过,如果该帧位于另一个域上,则无法读取另一帧的HTML。有没有办法在Javascript中执行此操作?我意识到这个限制是出于安全目的,但我的使用是合法的。
此致
彼得
答案 0 :(得分:0)
我们在这里讨论iFrame吗?如果是这样,你能不能获得iFrame(jQuery?)的src属性并启动一个返回页面的ajax请求,或者将src属性传递给你自己的脚本(PHP / ASP无论如何),它使用CURL来收集你想要的信息?
答案 1 :(得分:0)
是的,你绝对可以使用跨域代理读取框架的内容。基本上,您需要创建一个服务器端脚本,该脚本请求相关帧的src URL。在客户端,您请求此脚本而不是src URL(位于另一个域上,因此受浏览器内的安全限制),将src URL作为参数传递。
以下是使用cURL的PHP示例。
<?php
$target = $_REQUEST['t'];
if (empty($target)) { die 'no url provided'; }
$useragent="Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $target);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$res = curl_exec($ch);
curl_close($ch);
echo $res;
?>
在您的页面上,使用以下JavaScript函数返回目标框架的HTML
var URL = top.frames.(YOUR FRAME NAME HERE).location;
var xh = null;
if (window.XMLHttpRequest) {
xh = new XMLHttpRequest();
} else if (window.ActiveXObject) {
xh = new ActiveXObject("Microsoft.XMLHTTP");
} else {
alert("Your browser does not support XMLHTTP.");
return false;
}
var ret = null;
xh.onreadystatechange = function() {
if (xh.readyState == 4 && xh.status == 200) {
// do whatever you want with the html here
ret = xh.responseText;
}
}
xh.open("GET", url, false);
xh.send(null);
请告诉我这是否适合您。