【问题标题】:Suppress onbeforeunload in remote iframe抑制远程 iframe 中的 onbeforeunload
【发布时间】:2012-04-12 13:21:00
【问题描述】:

我有一个嵌入了来自不同域的 iframe 的页面(用于信用卡支付)。在 iframe 中加载的页面注册了一个 onbeforeunload 处理程序。这意味着每当我尝试离开父页面或点击重新加载时,它都会要求用户确认。到目前为止还好。

但是,父页面上的交互应该可以在不调用 iframe 中调用的 onbeforeunload 处理程序的情况下工作。这是一个简化的示例:

<iframe src="https://paymentprovider.com/payment"></iframe>
<a href="/abort_payment">Abort payment (fire onbeforeunload)</a>
<a href="/alternative_payment">I don't have a credit card (suppress onbeforeunload)</a>

我无法使用 iframe 沙箱,因为 iframe 需要 Javascript 才能工作。我还尝试动态设置 iframe 的沙盒属性,但这似乎并不可靠。

我能够取消确认框的唯一方法是删除链接的 onclick 处理程序中的 iframe:

iframe = document.getElementById("payment_iframe");
iframe.parentNode.removeChild(iframe)

您认为该 hack 有什么问题吗?这甚至应该工作吗?你知道有什么更好的方法来完成同样的事情吗?

谢谢

【问题讨论】:

  • 听起来不错的解决方法。

标签: javascript iframe same-origin-policy onbeforeunload


【解决方案1】:

不,这是一个非常好的和可靠的解决方案,前提是它首先需要 javascript 才能工作。

(你会错过的一个极端情况是那些为你的页面关闭了 javascript 的极客,但不是支付提供商,但从它的声音来看,他们只会得到这个烦人的多余的一个额外问题,他们很友善无论如何,在某种程度上要求。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-09
    相关资源
    最近更新 更多