javascript: 如何编写适合FireFox的对话框?

原创 2007年09月24日 12:43:00
这个问题困扰我好久了. 终于找到了解决方案, 非常感谢作者!

在设计Blog操作流程的时候,计划在添加页面和修改页面都用弹出对话框的方式。添加和修改结束时,点击提交,对话框关闭,同时后面的列表窗口刷新。这样就感觉在用Windows的界面程序一样,界面友好性很好。 

但是在实际操作的时候发生了一个问题,IE的对话框技术,对FireFox是不支持的,怎么才能做到既支持IE又支持FireFox的对话框呢? 

还好,昨天在研究TinyMCE,里面有支持FireFox的对话框技术可以借鉴。 

我写的打开对话框的方法: 
function popupDialog(url,width,height){ 
    //showx = event.screenX - event.offsetX - 4 - 10 ; // + deltaX;  这段代码只对IE有效,已经不用了 
    //showy = event.screenY - event.offsetY -168; // + deltaY; 这段代码只对IE有效,已经不用了 
     
        var x = parseInt(screen.width / 2.0) - (width / 2.0);  
    var y = parseInt(screen.height / 2.0) - (height / 2.0); 
        var isMSIE= (navigator.appName == "Microsoft Internet Explorer");  //判断浏览器 

        if (isMSIE) {           
            retval = window.showModalDialog(url, window, "dialogWidth:"+width+"px; dialogHeight:"+height+"px; dialogLeft:"+x+"px; dialogTop:"+y+"px; status:no; directories:yes;scrollbars:no;Resizable=no; "  ); 
       } else { 
        var win = window.open(url, "mcePopup", "top=" + y + ",left=" + x + ",scrollbars=" + scrollbars + ",dialog=yes,modal=yes,width=" + width + ",height=" + height + ",resizable=no" ); 
        eval('try { win.resizeTo(width, height); } catch(e) { }'); 
        win.focus();             
    } 


在被打开的对话框里,我是用了上下分Frame的页面,因为在 IE里,对话框是不可以提交的,但是分成Frame后,就可以提交了。 
在提交的按钮上,加上这段代码: 

  function doReload(){    
     var isMSIE= (navigator.appName == "Microsoft Internet Explorer"); 
     if (isMSIE){ 
         parent.dialogArguments.location.reload(); 
     }else{ 
         parent.opener.document.location.reload(); 
     }      
     top.close();     
  } 

两种浏览器的打开对话框的方式不一样 
IE:window.showModalDialog(url, window, "dialogWidth:300px; dialogHeight:300px; dialogLeft:200px; dialogTop:200px; status:no; directories:yes;scrollbars:no;Resizable=no; "  ); 
FireFox: window.open(url, "mcePopup", "top=200,left=200,scrollbars=no,dialog=yes,modal=yes,width=300,height=300,resizable=no" ); 

关闭窗口时: 
IE: parent.dialogArguments.location.reload(); 
FireFox:parent.opener.document.location.reload(); 

还有一个很重要的注意点。FireFox好像不支持对话框的window.close(); 
所以最后使用的关闭窗口用的是 top.close();  这个IE、FireFox都支持。 

Firefox禁用JavaScript

Firefox禁用JavaScript 1、在Firefox地址栏里输入“about:config”。 2、在搜索栏输入“javascript.enabled”查找到首选项。 3、点击鼠标右键选...
  • flexitime
  • flexitime
  • 2014年04月16日 22:31
  • 5482

用Javascript做对话框

 Javascript有许多内建的方法来产生对话框,如:window.alert(), window.confirm(),window.prompt().等。 然而IE提供更多的方法支持对话框。如: ...
  • jiagun4
  • jiagun4
  • 2006年05月18日 10:25
  • 809

JavaScript实现模态对话框

  今天哈尔滨今日图灵学校的朋友谈起js实现模态窗口,看俺是孤陋寡闻,遂演示了一番,原来不就是弹窗对话框之类的么!!javascript不是用window.open实现  么,刚发表一番言论 发现不对...
  • royal_coffee
  • royal_coffee
  • 2008年04月21日 08:28
  • 7328

【Firefox扩展】javascript的对话框

 Firefox的扩展要用到Javascript,有时候要提示用户一些信息,最简单的方法就是alert/prompt/confirmalert()只接受一个参数,就是要显示给用户的一个文本,调用ale...
  • Xscarlet
  • Xscarlet
  • 2007年07月29日 15:37
  • 1762

javascript读写文件(支持firefox和IE)

function read(path) {         var content = "";         try{                 var fso = new ActiveXOb...
  • suleil1
  • suleil1
  • 2015年10月28日 16:53
  • 250

很方便的javascript开发工具--火狐的Scratchpad(代码草稿本)工具

火狐的console控制台可以很方便的测试单行js代码,就像这样:但是在测试一段js代码时并不方便,这是就可以用Scratchpad代码草稿本工具,通过 ctrl+F4 打开窗口,我们可以打开写好的j...
  • github_36091081
  • github_36091081
  • 2017年07月18日 14:46
  • 377

Firefox中利用javascript调用本地程序

Firefox中利用javascript调用本地程序 2007-08-30 16:03 2577人阅读 评论(3) 收藏 举报 javascriptfirefoxfuncti...
  • qq5132834
  • qq5132834
  • 2014年05月31日 12:34
  • 1407

a标签使用href=”javascript:void(0); 在火狐浏览器跟chrome 不兼容

今天在开发中发现,使用如下方式的链接。在Chrome中点击后行为符合预期,但在IE下会新开标签卡(根据参考资料,Firefox中有相同问题)。 test 后经查找资料,发现需如下解决。 通过...
  • u013381651
  • u013381651
  • 2016年06月22日 17:54
  • 5510

JavaScript 简单对话框的使用(提交,确认,输入对话框)

http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">http://www.w3.org/1999/xhtml" >    显示对话框   ...
  • vancekq
  • vancekq
  • 2010年03月03日 20:54
  • 2621

如何编写firefox插件

转帖至:http://www.ibm.com/developerworks/cn/web/wa-lo-firefox-ext/index.html 本文中所要构建的是一个能够批量下载某个 HTML 页...
  • nieshanfeng1
  • nieshanfeng1
  • 2013年12月22日 22:38
  • 1241
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章: javascript: 如何编写适合FireFox的对话框?
举报原因:
原因补充:

(最多只允许输入30个字)