2

我正在将同一域中的页面加载到iframe我的页面上。

在与 JavaScript 驱动的表单交互后,iframe我希望它接管整个文档。我不能只将我的页面位置设置为 的位置,iframe因为无法通过传递 URL 参数使其达到我想要的状态。

我能找到的跳出iframes 的所有参考资料都是关于iframe控制弹出的页面。我想弹出iframe主文档上下文中的代码。

(我的项目实际上是一个 Google Chrome 用户脚本,它与我无法控制服务器的第 3 方网站进行交互。)

我正在使用 jQuery,但 vanilla JavaScript 当然也可以。

4

1 回答 1

3

您不能通过常规方法 ( location.href = "...") 真正“弹出” iframe,因为您将丢失表单和 JS 状态。

同样,代码如下:

document.head=frames[0].document.head;
document.body=frames[0].document.body;

似乎可以工作,但不会保留 JS 状态。

可以遍历框架的内容并将结构和值复制到当前页面,但这对我来说似乎是一件愚蠢的事情。

我建议你让它看起来像框架已经接管了。你可以用这样的代码做到这一点:

var usurpingFrame = $("YOUR FRAME SELECTOR");
usurpingFrame.css ( {
    position:   "fixed",
    top:        "0",
    left:       "0",
    "z-index":  "8888",
    margin:     "0",
    height:     "100%",
    border:     "none"
} );
usurpingFrame.width ($(window).width() );
$("*").not (usurpingFrame).not (usurpingFrame.parents() ).hide ();
于 2012-06-28T08:10:00.967 回答