2013-07-09 47 views
0

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

对于客户端而言,我最简单的形式是在一个单独的网站中的一个页面的对象标签中托管一个网站(ASP .NET Web Forms网站),原因是荒谬和令人兴奋的,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引用和post-backs变得难以管理,并且将点击事件添加到每个按钮或href都会影响性能和功能。

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

+0

我看到你已经做了一些试验;)所以,它不能使用iframe吗? –

+0

无法在IFRAME中使用。仍然试图自己解决 – heads5150

回答

0

我发现了一个可行的解决方案。

在父页面中为自定义事件创建处理程序。在这种情况下, “unloadingChild”:

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

在孩子托管的网页触发通过体卸载事件自定义事件: // body元素卸载 $(窗口).unload(bodyUnload()); function bodyUnload(){//触发父级unloadingChild事件 parent。$(“body”)。trigger(“unloadingChild”); }

我不知道这是不是最好的方法,但它似乎是一个好方法。这当然适用于这种情况。

它不解决对象卸载,但它解决了问题。

这只适用于两个网站same origin。否则,你会得到类似于“权限被拒绝访问属性”的错误'