`
javathinker
  • 浏览: 234929 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

showModelessDialog兼容firefox和ie

阅读更多
window.showModelessDialog方法比window.open方法弹出的窗口不同的是弹出的窗口是模态的,这样必须关闭子窗口后才能操作父窗口.遗憾的是只有IE的支持,下面的方法能让FireFox"支持"模态窗口弹出 这种方法的灵感来自于上面的CuteEditor,弹出的窗口是模态的,在FF下是在window上写一个click方法,只要点击父窗口就调用子窗口的 focus()方法,这样看上去就是"模态"的了 var userAgent = navigator.userAgent.toLowerCase(); var isFireFox=/mozilla/.test(userAgent) && !/(compatible|webkit)/.test(userAgent); if(isFireFox) { window.showModelessDialog=function (url) { var windowName=(arguments[1]==null?"":arguments[1].toString()); var feature=(arguments[2]==null?"":arguments[2].toString()); var OpenedWindow=window.open(url,windowName,feature); window.addEventListener('click',function (){OpenedWindow.focus();},false); return OpenedWindow; } } else { //子窗口中调用父窗口 //IE中用window.parent.document //FF中用window.opener.document //下面的代码将 作用于IE '重载' window.showModelessDialog 方法 统一用 window.opener访问父窗口 var originFn=window.showModelessDialog; window.showModelessDialog=function (url) { var OpenedWindow= originFn(url,arguments[1],arguments[2]); OpenedWindow.opener=window; } } function popW() { var OpenedWindow=window.showModelessDialog('popWindow2.html','','width=400,height=400'); }说破了其实很简单,只是在下面的重写IE中的showModelessDialog方法就有点技巧了,originFn竟然可以"记住"原有的showModelessDialog方法,并且能这样调用,在我的试探中都有些吃惊. 通过上面的改造,showModelessDialog显得好用多了,兼容了两种浏览器.
分享到:
评论

相关推荐

    ie firefox 兼容问题大全

    - **问题描述**:在IE和部分版本的Firefox中,可以通过`window.location`或`window.location.href`获取当前页面的URL;但在某些旧版本的Firefox中,只能使用`window.location`。 - **解决方案**:建议始终使用`...

    IE和Firefox在css,JavaScript方面的兼容性

    标题与描述均聚焦于“IE和Firefox在css,JavaScript方面的兼容性”,这涉及到网页开发中一个重要的议题:浏览器兼容性。在web开发中,确保代码能在不同浏览器上正常运行是至关重要的,因为用户可能使用各种不同的...

    IE和Firefox中J avaScript兼容

    ### IE和Firefox中JavaScript兼容性解析 在Web开发过程中,浏览器兼容性问题一直是开发者们重点关注的问题之一。不同的浏览器对同一段代码的解析和执行可能会有所不同,尤其是早期版本的Internet Explorer(IE)和...

    firefox与IE对js和CSS的区别.txt

    - IE和Firefox 2.0.x中,可以使用`window.location`或`window.location.href`。 - Firefox 1.5.x中,只能使用`window.location`。 - **解决方案**: - 使用`window.location`以保持兼容性。 ##### 12. 模态和非...

    Ie和firefox的Js区别

    - **窗口**:IE支持`showModalDialog`和`showModelessDialog`方法,Firefox不支持。可以用`window.open()`替代,如果需要传递参数,可借助frame或iframe。 2. **总结** - **对象变量名**:在JavaScript中,建议...

    Javascript在IE和Firefox浏览器常见兼容性问题总结

    - IE和Firefox2.0.x允许使用`window.location`或`window.location.href`。 - Firefox1.5.x只支持`window.location`。 - 解决方案:统一使用`window.location`。 12. **模态和非模态窗口**: - IE提供了`...

    javascript firefox兼容ie的dom方法脚本

    6. **模态和非模态窗口**:IE提供了`showModalDialog`和`showModelessDialog`方法打开模态和非模态窗口,Firefox不支持。可以使用`window.open()`函数并自定义CSS实现类似效果。 7. **`body`元素的存在时间**:Fire...

    IE和ff的兼容技巧

    通过以上对IE和Firefox兼容技巧的详细介绍,我们可以看到,虽然这些浏览器之间存在一定的差异,但通过采取一定的策略和技巧,可以在很大程度上解决兼容性问题。在实际开发过程中,还需要根据具体情况选择合适的解决...

    常见兼容性问题

    在Firefox 2.0.x及更早版本中,`window.location`可用来重定向页面,而IE和较新版本的Firefox则使用`window.location.href`。统一使用`window.location`来避免兼容性问题。 5. **frame问题**: 访问frame对象时,...

    浏览器中JS的兼容问题.docx

    JavaScript在不同浏览器中的兼容性问题一直是开发者面临的重要挑战,尤其是Internet Explorer (IE) 和 Firefox (FF) 这两个浏览器之间的差异。以下是一些关键的兼容性问题和解决方案: 1. **对象问题** - **Form...

    浏览器兼容性问题大汇总

    4. **window.location.href问题**:在IE和较新版本的Firefox中,可以使用`window.location`或`window.location.href`,但在Firefox 1.5.x中只能使用`window.location`。建议统一使用`window.location`。 5. **frame...

    js模式化窗口问题![window.dialogArguments]

    - `window.showModelessDialog()`则是IE5+支持的非模态对话框,允许用户同时与对话框和父窗口进行交互。 2. 显示样式问题: 使用`window.showModalDialog()`时,可能遇到不同浏览器下显示尺寸不一致的问题。例如...

    JS打开模式对话框

    - 这些方法在现代浏览器中的支持情况可能不同,尤其是跨浏览器兼容性问题,例如 `showModalDialog()` 在某些版本的Firefox和Chrome中可能已被废弃或不推荐使用。 - 考虑到兼容性和用户体验,开发者通常会使用HTML5...

    js在ie下打开对话窗口的方法小结

    需要注意的是,`showModalDialog()`和`showModelessDialog()`这两个方法是IE浏览器特有的,它们在现代浏览器如Chrome、Firefox和Safari中并不被支持。随着IE浏览器逐渐被淘汰,开发者应尽量避免在新项目中使用这些...

    Window.ShowModalDialog使用手册

    - `window.showModalDialog()` 和 `window.showModelessDialog()` 只在Internet Explorer中可用,不被现代浏览器如Chrome、Firefox等支持。 - 由于安全性问题,这两个方法在某些版本的IE中可能无法正常使用,尤其是...

Global site tag (gtag.js) - Google Analytics