我想以独立于客户端网络浏览器分辨率的固定分辨率拍摄当前访问的站点的快照。因此,我想将活动站点加载到具有该固定分辨率的隐藏 iframe 中,并从那里获取快照。
现在我的问题是:如何在 iframe 中加载我当前所在的同一站点。加载其他页面工作正常,但我无法在 iframe 中加载相同的站点。
这是一些安全问题吗?
我想以独立于客户端网络浏览器分辨率的固定分辨率拍摄当前访问的站点的快照。因此,我想将活动站点加载到具有该固定分辨率的隐藏 iframe 中,并从那里获取快照。
现在我的问题是:如何在 iframe 中加载我当前所在的同一站点。加载其他页面工作正常,但我无法在 iframe 中加载相同的站点。
这是一些安全问题吗?
测试了嵌套的 iframe,它在不同的浏览器中.src
是相等的。document.href.url
只有 Chrome 允许在第一级嵌入这样的 iframe,其他浏览器阻止上述递归并将 iframe 留空。(附带说明一下,Firefox 和 Opera 似乎最多允许 10 个和 20 个不同的嵌套 iframe,其他浏览器(如 Google Chrome 和 Explorer)无限添加 iframe。)您可以使用以下代码将父页面嵌入 iframe ,通过稍微修改的网址:
function load_iframe(addr) {
var iframe = document.getElementById('iframe1');
if (addr == document.location.href) {
if (addr.indexOf('?') == -1) {
addr += '?dummy_string';
} else {
addr += '&dummy_string';
}
}
iframe.src = addr;
}
HTML 示例:
<a href="" onclick="event.preventDefault();load_iframe(this.href);">This page</a>
<iframe id="frame1" src="" style="width:100%; height:500px" />
就像是
if (!document.getElementById('hiddenFrame') {
document.appendChild('<iframe id="hiddenFrame" src='+document.location+' style="display:none"'/>); }
将脚本放在页面底部,就在关闭 BODY 标记之前,或者使用 jQuery 之类的库。