我遇到了IE9和对象标签的一个有趣问题。
在客户端的最简单形式中,我在一个单独网站中的页面的对象标记内托管一个网站(ASP .NET Web Forms网站),出于荒谬和令人兴奋的原因,html如下所示:
<object id="so" data="https://so.com/so" scrolling="auto" frameborder="0">
</object>
在Chrome和Firefox中,当我点击对象标签内的html中的链接时,浏览器标签会有一个加载图标(根据正常的页面事件),向用户提供发生事件的反馈。在IE 9中,这不会发生,因此用户不知道单击链接已经触发了任何事件。
我查看了object标记的onbeforeunload事件但没有成功,例如:
<object id="so" data="https://so.com/so" scrolling="auto" frameborder="0" onBeforeOnLoad="javascript: onDocumentUnLoad();">
</object>
使用上述方法不会调用onbeforeunload函数。
我还尝试通过jQuery将ajax加载到div中,但是处理超出上下文的css和js引用和post-backs变得无法管理,并且还为每个按钮添加了单击事件或者href影响了性能和功能。
我想知道是否有另一种方法可以提供用户反馈或简单的解决方法。
答案 0 :(得分:0)
我找到了一个有效的解决方案。
在父页面中为自定义事件创建处理程序。在这种情况下“unloadingChild”:
//using jQuery 1.4.2
$("body").bind("unloadingChild", function(){
console.log("child unloaded");
});
在子托管页面中,通过body unload事件触发自定义事件: // body element卸载 $(窗口).unload(bodyUnload()); function bodyUnload(){ //触发父unloadingChild事件 父$( “身体”)触发( “unloadingChild”)。 }
我不知道这是不是最好的方式,但它似乎是一种好方法。这肯定适用于这种情况。
它不能解决对象卸载问题,但它可以解决问题。
这仅适用于same origin的两个网站。否则,您将收到类似于“拒绝访问属性'$'的权限”的错误