对象标签和IE9

时间:2013-07-09 03:16:11

标签: html internet-explorer-9

我遇到了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影响了性能和功能。

我想知道是否有另一种方法可以提供用户反馈或简单的解决方法。

1 个答案:

答案 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的两个网站。否则,您将收到类似于“拒绝访问属性'$'的权限”的错误