我有以下页面
<!DOCTYPE html>
<html>
<script type="text/javascript">
function loopLink(i)
{
window.open($('#iframe_a').contents().find('.image-navigator-mid a').attr('href'),'iframe_a');
setTimeout(function()
{
if (i < 3) loopLink(i+1);
}, 5000);
}
// Wait for the page to load first
window.onload = function() {
var a = document.getElementById("mylink");
a.onclick = function() {
loopLink(0);
return false;
}
}
</script>
<iframe src="http://nanofate.us/content/fate-new-hair-style#node-inner" width="500" height="500" name="iframe_a" id="iframe_a"></iframe>
<br />
<a id="mylink" href="">Execute</a>
这个想法是,在当前的形式中,当您单击“执行”时,javascript将导致iframe使用“上一个”链接4次,每次等待5秒,但是当我单击该链接时,它只会重新加载页面,甚至在之后等待 10 秒 iframe 没有执行任何操作
我想知道我做错了什么
Due to 同源政策 http://javascript.info/tutorial/same-origin-security-policy限制,如果 iframe 正在运行来自其他域的页面,则您无法访问 iframe 的内容。对于相同的域策略有一些解决方案,例如
查看Tomodo http://tomodo.com/faq/。这只是为了给你一个提示,他们如何使用代理来绕过同源策略约束并访问 iframe 内容。所以实现思路是这样的
- 创建代理并将其托管在
a.com/proxy
- 您的主页位于
a.com/index.html
- 现在,请求您的代理向您提供 iframe_url 的内容,如下所示
a.com/proxy?url=iframe_url.com
请注意,这不是一项简单的任务你可能需要在你的代理处处理很多案件,比如处理相对 URL, 通过 iframe_url 读取 cookie等等等等
因此,只有当你迫切需要它时才去使用它。
另一个解决方案可能是这样的:
如果您想下载特定域的一些图像,只需询问您的服务器端代码即可。您的后端代码将获取页面的 html 并使用一些 HTML 解析器,例如
-
用于 python 的 BeautifulSoup (文档链接 https://pypi.python.org/pypi/beautifulsoup4)
-
用于 Java 的 Jsoup (文档链接 http://jsoup.org/)
解析 img 标签并提取源代码并获取图像并下载它们。
PS: 只是为了一些好的信息,请阅读规避同源政策的方法 https://stackoverflow.com/q/3076414/1310070
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)