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中,可以通过`window.location`或`window.location.href`获取当前页面的URL;但在某些旧版本的Firefox中,只能使用`window.location`。 - **解决方案**:建议始终使用`...
标题与描述均聚焦于“IE和Firefox在css,JavaScript方面的兼容性”,这涉及到网页开发中一个重要的议题:浏览器兼容性。在web开发中,确保代码能在不同浏览器上正常运行是至关重要的,因为用户可能使用各种不同的...
### IE和Firefox中JavaScript兼容性解析 在Web开发过程中,浏览器兼容性问题一直是开发者们重点关注的问题之一。不同的浏览器对同一段代码的解析和执行可能会有所不同,尤其是早期版本的Internet Explorer(IE)和...
- IE和Firefox 2.0.x中,可以使用`window.location`或`window.location.href`。 - Firefox 1.5.x中,只能使用`window.location`。 - **解决方案**: - 使用`window.location`以保持兼容性。 ##### 12. 模态和非...
- **窗口**:IE支持`showModalDialog`和`showModelessDialog`方法,Firefox不支持。可以用`window.open()`替代,如果需要传递参数,可借助frame或iframe。 2. **总结** - **对象变量名**:在JavaScript中,建议...
- IE和Firefox2.0.x允许使用`window.location`或`window.location.href`。 - Firefox1.5.x只支持`window.location`。 - 解决方案:统一使用`window.location`。 12. **模态和非模态窗口**: - IE提供了`...
6. **模态和非模态窗口**:IE提供了`showModalDialog`和`showModelessDialog`方法打开模态和非模态窗口,Firefox不支持。可以使用`window.open()`函数并自定义CSS实现类似效果。 7. **`body`元素的存在时间**:Fire...
通过以上对IE和Firefox兼容技巧的详细介绍,我们可以看到,虽然这些浏览器之间存在一定的差异,但通过采取一定的策略和技巧,可以在很大程度上解决兼容性问题。在实际开发过程中,还需要根据具体情况选择合适的解决...
在Firefox 2.0.x及更早版本中,`window.location`可用来重定向页面,而IE和较新版本的Firefox则使用`window.location.href`。统一使用`window.location`来避免兼容性问题。 5. **frame问题**: 访问frame对象时,...
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...
- `window.showModelessDialog()`则是IE5+支持的非模态对话框,允许用户同时与对话框和父窗口进行交互。 2. 显示样式问题: 使用`window.showModalDialog()`时,可能遇到不同浏览器下显示尺寸不一致的问题。例如...
- 这些方法在现代浏览器中的支持情况可能不同,尤其是跨浏览器兼容性问题,例如 `showModalDialog()` 在某些版本的Firefox和Chrome中可能已被废弃或不推荐使用。 - 考虑到兼容性和用户体验,开发者通常会使用HTML5...
需要注意的是,`showModalDialog()`和`showModelessDialog()`这两个方法是IE浏览器特有的,它们在现代浏览器如Chrome、Firefox和Safari中并不被支持。随着IE浏览器逐渐被淘汰,开发者应尽量避免在新项目中使用这些...
- `window.showModalDialog()` 和 `window.showModelessDialog()` 只在Internet Explorer中可用,不被现代浏览器如Chrome、Firefox等支持。 - 由于安全性问题,这两个方法在某些版本的IE中可能无法正常使用,尤其是...