【问题标题】:Object Tag and IE9对象标签和 IE9
【发布时间】:2013-07-10 06:52:17
【问题描述】:

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

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

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

【问题讨论】:

  • 我看到你已经做了一些实验;)那么,使用iframe 也不起作用?
  • 在 IFRAME 中也不起作用。仍在尝试自己解决

标签: html internet-explorer-9


【解决方案1】:

我找到了一个可行的解决方案。

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

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

在子托管页面中,通过 body 卸载事件触发自定义事件: //body元素卸载 $(window).unload(bodyUnload()); 函数体卸载(){ //触发父级unloadingChild事件 parent.$("body").trigger("unloadingChild"); }

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

它不能解决对象卸载,但可以解决问题。

这仅适用于same origin 的两个网站。否则你会得到类似“Permission denied to access property '$'”的错误

【讨论】:

    猜你喜欢
    • 2011-09-28
    • 1970-01-01
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    • 2011-06-28
    • 1970-01-01
    • 1970-01-01
    • 2011-09-24
    相关资源
    最近更新 更多