Chinaunix首页 | 论坛 | 博客
  • 博客访问: 944607
  • 博文数量: 264
  • 博客积分: 10107
  • 博客等级: 上将
  • 技术积分: 2455
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-09 16:34
文章分类

全部博文(264)

文章存档

2012年(1)

2011年(11)

2010年(128)

2009年(82)

2008年(42)

我的朋友

分类: 系统运维

2009-09-02 13:11:49

----------------------------------------------------

window.dialogArguments的使用

dialogArguments只能在mode和modeless窗口中才能使用,可以传递传递任意类型的值,
上例就是传得失window. 在以前的项目中,页面之间传递参数经常使用的是url后接参数的形式,
现在终于发现dialogArguments不愧为更好的方法。 


showModelessDialogEX.htm


Enter your first name: Joan

Here is the code for "myDialog.htm".


myDialog.htm











-------------------------------------------------------------

此处,执行到sData.fnUpdate();总是报错,说对象不支持此属性和方法。

下面这个也是一样:

js页面传值

子页面
点击确定执行js方法
function save()
{

var elementid=document.getElementById("elementid").value;
var elementname= document.getElementById("elementname").value);
// 把返回的值添加到父页面
   var windowObj = dialogArguments;
    windowObj.elementID    = elementid;
    windowObj.elementName  = elementname;
    windowObj.initElement();
    window.close();
}

父页面
js:
打开子页面
open()
{
window.showModalDialog(url);
}
得到数据
function initElement()
   {
       var name = elementName;
       var id = elementID;
  }

 

------------------------------------------------------------

 

 

js页面传值

关键字: js

Html代码 复制代码
  1.   
  2. New Document
    这是父窗口


    Html代码 复制代码
    1.   
    2.   
    3.   
    4. >  
    5. <HTML>  
    6.  <HEAD>  
    7.   <TITLE> New Document TITLE>  
    8.      
    9.     <script type="text/javascript">  
    10.         function execute() {   
    11.             window.returnValue = document.getElementsByName("content")[0].value;   
    12.             window.close();   
    13.         }   
    14.     script>  
    15.  HEAD>  
    16.   
    17.  <BODY>  
    18.     <input type="text" name="content" value="这是子窗口">  
    19.     <input type="button" value="确定" onclick="execute()">  
    20.  BODY>  
    21. HTML>  
    22. -------------------------------------------------------------------------

    代码测试通过,只是returnValue一个值,想传多个参数就不行了。

    ----------------------------------------------------------------------

    dialogArguments参数属性


    Retrieves the variable or array of variables passed into the modal dialog window.

    dhtml语法

    [ vVariables = ] window.dialogArguments

    DHTML可能的值

    vVariables String, numeric, object, or array value that specifies arguments.

    The property is read-only. The property has no default value.

    Remarks

    The dialogArguments property applies only to windows created using the and methods.

    Examples

    The following example shows how to retrieve information passed into a modal dialog window using the dialogArguments property. This example consists of two snippets of code, which correspond to two different files. One file launches the modal window and the other file stores the code for the modal window.

    This file launches the modal window and sends an object to that modal window.

    
    
    
    
    
    
    
    First Name:
    Last Name:

    This file (modalDialogSource.htm), stores the code for the modal window. The object sent to this modal window is retrieved using the dialogArguments property.

    
    
    
    Untitled
    
    
    First Name:
    
    
    
    
    Last Name:
    This feature requires Microsoft® Internet Explorer 4.0 or later. Click the following icon to install the latest version. Then reload this page to view the sample.

    是否符合公共标准

    There is no public standard that applies to this property.

    Applies To

     

    ----------------------------------------------------------------------

    showModalDialog和showModelessDialog使用心得

    一、showModalDialog和showModelessDialog有什么不同?
      showModalDialog:被打开后就会始终保持输入焦点。除非对话框被关闭,否则用户无法切换到主窗口。类似alert的运行效果。
      showModelessDialog:被打开后,用户可以随机切换输入焦点。对主窗口没有任何影响(最多是被挡住一下而以。:P)

    二、怎样才让在showModalDialog和showModelessDialog的超连接不弹出新窗口?
      在被打开的网页里加上就可以了。这句话一般是放在和之间的。

    三、怎样才刷新showModalDialog和showModelessDialog里的内容?
      在showModalDialog和showModelessDialog里是不能按F5刷新的,又不能弹出菜单。这个只能依靠javascript了,以下是相关代码:


      将filename.htm替换成网页的名字然后将它放到你打开的网页里,按F5就可以刷新了,注意,这个要配合使用,不然你按下F5会弹出新窗口的。

    四、如何用javascript关掉showModalDialog(或showModelessDialog)打开的窗口。
      
      也要配合,不然会打开一个新的IE窗口,然后再关掉的。

    五、showModalDialog和showModelessDialog数据传递技巧。
      (作者语:本来想用一问一答形式来写的,但是我想不出这个怎么问,所以只好这样了。)
      这个东西比较麻烦,我改了好几次了不是没办法说明白(语文水平越来越差了),只好用个例子说明了。
      例子:
        现在需要在一个showModalDialog(或showModelessDialog)里读取或设置一个变量var_name

          一般的传递方式:
            window.showModalDialog("filename.htm",var_name)
            //传递var_name变量
          在showModalDialog(或showModelessDialog)读取和设置时:
            alert(window.dialogArguments)//读取var_name变量
            window.dialogArguments="oyiboy"//设置var_name变量
        这种方式是可以满足的,但是当你想在操作var_name同时再操作第二个变理var_id时呢?就无法再进行操作了。这就是这种传递方式的局限性。
        
          以下是我建议使用的传递方式:
            window.showModalDialog("filename.htm",window)
            //不管要操作什么变量,只直传递主窗口的window对象
          在showModalDialog(或showModelessDialog)读取和设置时:
            alert(window.dialogArguments.var_name)//读取var_name变量
            window.dialogArguments.var_name="oyiboy"//设置var_name变量

            同时我也可以操作var_id变量
            alert(window.dialogArguments.var_id)//读取var_id变量
            window.dialogArguments.var_id="001"//设置var_id变量

            同样还可以对主窗口的任何对象进行操作,如form对象里的元素。
            window.dialogArguments.form1.index1.value="这是在设置index1元素的值"

    六、多个showModelessDialog的相互操作。
      因为光说很费劲,我就偷点懒,直接用代码来说了,如果不明白的话那就直接来信(oyiboy#163.net(使用时请将#改成@))问我吧。

      以下代码的主要作用是在一个showModelessDialog里移动别一个showModelessDialog的位置。

      主文件的部份js代码。
      var s1=showModelessDialog('控制.htm',window,"dialogTop:1px;dialogLeft:1px") //打开控制窗口
      var s2=showModelessDialog('about:blank',window,"dialogTop:200px;dialogLeft:300px")  //打开被控制窗口

      控制.htm的部份代码。
      
      
      
      
      

      以上关键部份是:
        窗口命名方式:var s1=showModelessDialog('控制.htm',window,"dialogTop:1px;dialogLeft:1px")
        变量访问方式:window.dialogArguments.s2.dialogTop

      这个例子只是现实showModelessDialog与showModelessDialog之间的位置操作功能,通过这个原理,在showModelessDialog之间相互控制各自的显示页面,传递变量和数据等。这要看各位的发挥了。

    作者Blog:http://blog.csdn.net/oyiboy/

     

    最后参考这个做出来了。

阅读(2050) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~