我有一个反馈弹出窗口(TickBox),它会加载一个跨域iFrame
,并在提交表单时加载“感谢....”页面。
我希望当用户提交反馈按钮时,它应该隐藏iFrame
包装器。
我知道由于“同源策略”安全限制,您无法在iFrame
更改时获得实际位置。
我的问题是,我可以通过history.length
以某种方式获取历史记录,以检查这是否是新位置?
或者可以阅读其内容并找到新的页面文本(例如:“感谢”)并隐藏其包装
$("iframe").load(function(){
var iframeSrc = $(this).contents()[0].location.hash; /*or history.length */
var isSubmitedUrl = /Home_Landing/
var testUrl = iframeSrc.search(isSubmitedUrl)
if(testUrl >= 0){ /*or if(history.length >= 0)*/
$(".iframeWrap").hide();
}
})
答案 0 :(得分:2)
Same origin policy不仅限制访问iframe
位置,还限制该iframe的整个window
对象。
因此,如果您无法访问iframe的window
,则无法访问iframe的window.history
属性。
您甚至无法阅读自己文档中iframe的src
属性,因为它不会反映iframe位置的变化。
我能想到的最好的方法是通过您自己服务器上的代理传递iframe的url,在这种情况下,您至少可以访问它的DOM并监听嵌入式"onsubmit"
1}},隐藏你的包装。