0

我遇到了一个关于 IE9 和对象标签的有趣问题。

在客户端的最简单形式中,我在一个单独网站中的页面的对象标记内托管了一个网站(ASP .NET Web 窗体站点),出于荒谬和令人兴奋的原因,html 如下所示:

    <object id="so" data="https://so.com/so" scrolling="auto" frameborder="0"> 

    </object>

在 Chrome 和 Firefox 中,当我单击对象标记内的 html 中的链接时,浏览器选项卡有一个加载图标(根据正常的页面事件),向用户提供事件发生的反馈。在 IE 9 中,这不会发生,因此用户不知道单击链接已触发任何事件。

我查看了对象标签的 onbeforeunload 事件,但没有成功,例如:

    <object id="so" data="https://so.com/so" scrolling="auto" frameborder="0" onBeforeOnLoad="javascript: onDocumentUnLoad();"> 

    </object>

使用上述方法不会调用 onbeforeunload 函数。

我还尝试通过 jQuery 将 ajax 加载到 div 中,但处理上下文 css 和 js 引用和回发变得难以管理,并且还向每个按钮或 href 添加点击事件影响性能和功能。

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

4

1 回答 1

0

I've found a solution that works.

In the parent page create an handler for a custom event. In this case "unloadingChild":

//using jQuery 1.4.2
$("body").bind("unloadingChild", function(){
    console.log("child unloaded");
});

In the child hosted page trigger the custom event via the body unload event: //body element unload $(window).unload(bodyUnload()); function bodyUnload(){ //trigger the parent unloadingChild event parent.$("body").trigger("unloadingChild"); }

I don't know if it's the best way but it seems like a good way. That certainly works for this scenario.

It doesn't solve the object unload but it gets around the problem.

This will only work for two websites with the same origin. Otherwise you will get an error similar to "Permission denied to access property '$'"

于 2013-07-09T09:23:16.547 回答