`

用"window.showModalDialog()"实现DIV模式弹出窗口 (转)

阅读更多
1、test.html  测试页
 <html>
 
<head>
   
<title>测试页面</title>
   
<style>
     .list {
       border
-top:1 solid #8A2BE2;
       border
-left:1 solid #8A2BE2;
       border
-right:1 solid #8A2BE2;
     }
     .list td {
       border
-bottom: 1 solid #8A2BE2;
     }
   
</style>
   
<script>
      function $(el) {
        
return document.getElementById(el);
      }
      function showWin(param) {
        window.showModalDialog(
"dailog.htm", param, "dialogWidth:" +param.width +"px;dialogHeight:"+param.height+"px;center:yes;help:no;scroll:no;status:no;resizable:no");
      }
      
      function TB(tbid) {
        
this.tb = typeof(tbid) == "string"? $(tbid): tbid;
        
this.getValue = function(rowIndex, cellIndex){
          var trs 
= this.tb.rows[rowIndex];
          var _td 
= trs.cells[cellIndex];
          
return _td.innerText;
        }
        
this.setValue = function(rowIndex, cellIndex, value) {
          var _tr 
= this.tb.rows[rowIndex];
          var _td 
= _tr.cells[cellIndex];
          _td.innerText 
= value;
        }
        
        
/********获取行索引********/
        
this.findRowIndex = function(eventSrc) {
          var _tr 
= eventSrc; //eventSrc事件源,必须在TD里获事件源是TD或TR本身
          while(_tr.tagName != "TR") {
            _tr 
=  _tr.parentNode;
          }
          var trs 
= this.tb.rows;
          
for(var i = 0; i < trs.length; i++){
            
if(_tr == trs[i]) return i;
          }
        }
      }
           
      function edit() {
        var tb 
= new TB("data");
        rIndex 
= tb.findRowIndex(event.srcElement);
        $(
"updateRowIndex").value = rIndex;
        $(
"userName").value = tb.getValue(rIndex, 1); //获得姓名
        $("sex").value = tb.getValue(rIndex, 2); //获得性别
        $("age").value = tb.getValue(rIndex, 3); //获得年龄
         showWin({title:"修改用户信息", width:390, height:230, _div:"openWin",parent:window});
      }
      
      function saveAndUpdateView(){
        var updateRowIndex 
= $("updateRowIndex").value;
        var tb 
= new TB($f("data")); //$f()在dailog.html定义,获到的table是父窗口中的table
        tb.setValue(updateRowIndex, 1, $("userName").value);
        tb.setValue(updateRowIndex, 
2, $("sex").value);
        tb.setValue(updateRowIndex, 
3, $("age").value);
        close();
      }
   
</script>
   
 
</head>
 
<body>
  
<p style="margin-top:60px">
   
<center>
     
<table id="data" class="list" width="460px">
       
<tr> 
         
<td>编号</td>
         
<td>用户名</td>
         
<td>性别</td>
         
<td>年龄</td>
         
<td>操作</td>
       
</tr>
       
<tr> 
         
<td>1</td>
         
<td>李永胜</td>
         
<td></td>
         
<td>27</td>
         
<td><span style="background:#FAEBD7;cursor:hand" onclick="edit();">&nbsp;修改&nbsp;</span></td>
       
</tr>
        
<tr> 
         
<td>2</td>
         
<td>林兄</td>
         
<td></td>
         
<td>27</td>
         
<td><span style="background:#FAEBD7;cursor:hand" onclick="edit();">&nbsp;修改&nbsp;</span></td>
       
</tr>
        
<tr> 
         
<td>3</td>
         
<td>叶兄</td>
         
<td></td>
         
<td>23</td>
         
<td><span style="background:#FAEBD7;cursor:hand" onclick="edit();">&nbsp;修改&nbsp;</span></td>
       
</tr>
     
</table>
   
</center>
  
</p>
  
  
<!---弹出窗口显示的内容---->
  
<div id="openWin" style="display:none;">
    
<form>
      
<fieldSet>
        
<legend>修改用户</legend>
        
<table>
          
<tr>
            
<td>用户名</td><td><input type="text" id="userName"/></td>
          
</tr>
          
<tr>
            
<td>性别</td><td><input type="text" id="sex"/></td>
          
</tr>
          
<tr>
            
<td>年龄</td><td><input type="text" id="age"/></td>
          
</tr>
        
</table>
      
</fieldSet> 
      
<input type="hidden" id="updateRowIndex"/>
    
</form>
    
<span style="background:#FAEBD7;cursor:hand" onclick="saveAndUpdateView();">&nbsp;修改&nbsp;</span>
  
</div>
 
</body>
</html>

2、dailog.html 窗口原型

<html>
 
<head>
   
<script>
     var param 
= window.dialogArguments; //传过来的模式对话框窗口参数
     document.title = param.title; //窗口标题,必须在窗口创建前实现s
     
   
/********将父窗口的js加载进来********/
     var scripts 
= param.parent.document.scripts;
     var _head 
= document.getElementsByTagName("head")[0];
     
for(var n = 0; n < scripts.length; n++) {
       
if(scripts[n].src) {
         var _script 
= newEl("script");
         _script.src 
= scripts[n].src;
         bind(_head, _script);
       }
else{//加载直接在html文档中写的script
         var _script = newEl("script");
         _script.text 
= scripts[n].text;
          bind(_head, _script);
       }
     }
     
     
/*******根据ID获得父窗口的元素*********/
     function $f(el) {
       
return param.parent.document.getElementById(el);
     }
    
    
/***********创建一个HTML元素*******/
     function newEl(tagName) {
       
return document.createElement(tagName);
     }
     
/***********追加元素***************/
     function bind(ower, child) {
       ower.appendChild(child);
     }
     
/*******在浏览器完成对象的装载后立即触发*********/
     window.onload 
= function() {
       var winDiv;
       
if(typeof(param._div) == "string") {
         winDiv 
= param.parent.document.getElementById(param._div); //父窗口window对象,因为param._div对象在父窗口
       }else{//直接传对象过来
         winDiv = param._div;
       }
       $(
"mainDiv").innerHTML = winDiv.innerHTML; //将DIV内容在弹出窗口中渲染
    }
   
</script>
 
</head>
 
<body>
 
<center>
  
<div id="mainDiv" style="margin-top:20px;width:90%"></div>
 
</center>
 
</body>
</html>

分享到:
评论

相关推荐

    jBox(Div模式窗口兼容各种浏览器)

    3. **模态行为**:jBox可以实现类似`showModalDialog()`的模态效果,阻止用户在弹出窗口关闭前操作页面的其他部分,提高了用户体验的连贯性。 4. **丰富的API和事件**:jBox提供了详细的API接口,允许开发者自定义...

    用Div仿showModalDialog模式菜单的效果的代码

    在本文中提到的“用Div仿showModalDialog模式菜单的效果”是指通过使用Div元素结合JavaScript来创建一个类似`showModalDialog`的弹出窗口。这种弹出窗口的特点是:当它出现时,会覆盖在页面的其他内容之上,并且阻止...

    弹出框的实现方式

    - **JavaScript函数**:定义了一个名为 `openDialog` 的函数,该函数使用 `window.showModalDialog` 方法打开 `b.aspx` 页面,并设置了一些弹出框的属性,如宽度、高度等。 - **按钮事件处理**:当用户点击按钮时,...

    js操作模态窗口及父子窗口间相互传值示例

    在上述示例中,父窗口通过`window.showModalDialog`方法弹出了一个模态对话框,这个对话框可以看作是子窗口。`window.showModalDialog`是IE浏览器特有的方法,它能创建一个可以返回结果的模态对话框。它的参数包括要...

    107个常用javascript语句

    21.弹出提示信息:window.alert("字符"); 22.弹出確认框:window.confirm(); 23.弹出输入提示框:window.prompt(); 24.指定当前显示链接的位置:window.location.href="URL" 25.取出窗体中的所有表单的数量:document....

    js弹出模式对话框,并接收回传值的方法

    模态对话框是一种常用于Web开发中的用户交互方式,它允许在不离开当前页面的情况下,通过弹出另一个页面来获取用户的输入信息。这一技术在需要用户进行选择、确认或输入信息时尤为有用。 首先,我们通过使用window....

    JavaScript 弹出窗体点击按钮返回选择数据的实现

    JavaScript中的弹出窗体通常用于实现用户交互,例如选择数据、确认操作或输入信息。在这个例子中,我们探讨的是如何通过JavaScript的`window.showModalDialog()`函数创建一个模态对话框,让用户在子窗口中进行选择,...

    js关闭模态窗口刷新父页面或跳转页面

    ### 使用iframe替代弹出窗口 由于模态对话框在不同浏览器之间的兼容性问题,以及在某些JavaScript框架(如jQuery Mobile等)中已不再推荐使用`showModalDialog`,我们可以考虑使用`iframe`来作为模态窗口的替代方案...

    javascript 常用代码

    模式对话框是Web应用中常见的交互方式之一,常用于弹出表单填写或确认操作等场景。 - **函数定义**: ```javascript function doSelectUser(txtId) { var strFeatures = "dialogWidth=500px;dialogHeight=360px;...

    js共享 js 问题

    而`window.open`则适用于打开新的浏览上下文,如弹出新窗口显示详细信息等。 #### 三、JSON数据处理 **4. 处理JSON数组** ```javascript // 假设dataList为后端返回的List集合 var dataListStr = ja.toString()....

    107个常用Javascript语句

    - **功能**:使窗口进入全屏模式。 - **应用场景**:创建沉浸式用户体验。 - **示例代码**: ```javascript function fullScreen() { this.moveTo(0, 0); this.outerWidth = screen.availWidth; this....

    javascript经典程序

    - 弹出新窗口 - 使用正则表达式进行数据验证 - HTML编辑器操作 - 色彩选取 - 网页元素操作等 通过上述分析,我们可以看到该文档涵盖了从基础到进阶的各种JavaScript技术点,适用于从初学者到高级开发者之间的不同...

    mvc常用的跳转

    关闭弹出对话框并刷新页面 ```javascript $("#divEdit").dialog("close"); window.location.reload(); ``` 此方法通常用于处理完某个弹窗内的数据后关闭弹窗并刷新主页面。例如,在用户完成表单提交或编辑操作后,...

    javascript常用代码

    文件中的`doSelectUser`函数通过`window.showModalDialog`方法实现了一个模态对话框,其参数分别为目标URL、对话框特性字符串。这可以用于在不离开当前页面的情况下打开一个新的对话框,与用户进行交互。 ### 2. ...

    javaee三大框架整合宅急送项目lib包

    通过 window.showModalDialog() 查看流程图页面 (弹出窗口,显示页面 url地址不能修改 ) function showPng(pid){ //alert("查看" + pid + "对应流程图"); window.showModalDialog("${pageContext.request....

    javascrip经典试题

    - `alert("提示信息")` 用于弹出一个包含消息的警告对话框,只有一个“确定”按钮。 - `confirm("提示信息")` 显示带有“确定”和“取消”按钮的对话框,用户点击确定或取消后会返回布尔值(true 或 false)。 - ...

Global site tag (gtag.js) - Google Analytics