parent和iframe中的Bootstrap.js文件



我正在通过twitter使用bootstrap创建一个web应用程序。该应用程序包含一个页面,该页面加载iframe中同一域的另一个页面。现在我的问题是,如果我在iframe中加载的页面也包含bootstrap.js文件,它就会开始与应用程序发生冲突。例如,我的应用程序有一个手风琴(折叠)http://twitter.github.com/bootstrap/javascript.html#collapse使用数据属性构建。加载带有bootstrap.js的页面后,collapse事件开始触发两次。所以类似的东西

<head>//Bootstrap css and js files included</head>
<body>
   <div>
     //Collapsible Menu #1
   </div>
   <iframe>
       <head>
           //BootStrap.js script from same location as parent
       </head>
       <body>
           // Another Collapsible Menu #2
       </body>
    `  </head> 
   </iframe>
</body>

在这里,当我试图点击菜单#1时,Bootstrap.js的代码会被触发两次,最终显示并隐藏菜单。但我的问题不仅仅局限于菜单。我需要能够在我的应用程序中使用bootstrap.js,并允许在iframe中加载已经包含bootstrap.jsp的页面。

有办法解决这个问题吗?还是我做错了什么?

发现问题。。它对我的应用程序非常具体。它的工作方式是——在"目标"网页中有一个包含的JS文件来触发应用程序。JS文件不会从页面中删除所有内容,也不会构建一个iframe来将"目标"的内容加载到iframe中。现在,在这种情况下,我让BootstrapJS在app.js文件之前运行,这反过来又导致在"父"框架中执行,然后当应用程序加载时,它被重新加载,从而导致冲突(或由于多次包含而导致的多个事件)。

我只是在IE9中遇到了同样的问题。

我在IFRAME对话框中打开了我的网站实例。这意味着有2个Bootstrap实例,如上所述。

当我将鼠标移出IFRAME时,它调整了底层布局的大小,以匹配IFRAME中较小布局的宽度。

为了解决这个问题,我不得不使用javascript禁用打开页面的bootstrap-responsive.js样式表。然后,当您关闭IFRAME对话框时,可以将其重新打开。

if(navigator.userAgent.indexOf("Trident/5")>-1){
    window.parent.document.getElementById("responsiveCSS").sheet.disabled = true;
}

可怕的黑客,我知道。

最新更新