我有一个页面,它嵌入了来自不同域的iframe(用于信用卡支付)。在iframe中加载的页面注册了一个onbeforeunload处理程序。这意味着每当我尝试导航离开父页面或重新加载时,它都会要求用户确认。到目前为止还好。
然而,在父页面上应该有交互,而不会调用iframe中的onbeforeunload处理程序。下面是一个简化的示例:
我无法使用iframe沙盒,因为iframe需要JavaScript才能工作。我还尝试动态设置iframe的沙盒属性,但这似乎不太可靠。
我唯一能够抑制确认框的方法是在链接的onclick处理程序中删除iframe:
然而,在父页面上应该有交互,而不会调用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)
你认为那个黑客有什么问题?这是否应该运行?你知道实现同样目的的更好的方法吗?
谢谢