posts - 495,comments - 227,trackbacks - 0
          ?? 在b\s系統(tǒng)中,用戶經(jīng)常需要打開子窗口選中某些項(xiàng)目,并將這些項(xiàng)目插入到父窗口的下拉選框中。本來(lái)以為在IE中實(shí)現(xiàn)這樣子窗口操作父窗口的功能十分簡(jiǎn)單,但是按常規(guī)的做法卻是行不通的。在google上搜索了一陣也沒有好的解決方案。最后看到國(guó)外的一個(gè)網(wǎng)頁(yè)上有以下內(nèi)容:

          Explorer 5.0 problems

          When it comes to dynamically generating options and selects, Explorer 5.0 on Windows has quite a few problems:

          1. Generating options in another frame or window doesn't work. Put the script in the page that contains the select. I have heard, but did not test, that this problem still exists in Explorer 6.0
          2. Generating selects and options through the 'pure' W3C DOM (ie. with any document.createElement()) crashes Explorer 5.0 . Solved in 5.5
            Generate these selects and options through innerHTML instead.
          3. Generating options from a popup window may crash any Explorer Windows.

          I have heard, but did not test, that the script below works fine in IE 5.0:

          var?doc?=?select.ownerDocument;
          if?(!doc)
          ????doc?
          =?select.document;
          var?opt?=?doc.createElement('OPTION');
          opt.value?
          =?value;
          opt.text?
          =?text;
          select.options.add(opt,?index);

          ??? 最后得到了啟發(fā),從而實(shí)現(xiàn)了這個(gè)功能,下面所有可能用到的實(shí)現(xiàn)方法的代碼。但是在這些代碼中有些方法是不可行的。最后有一個(gè)表格說(shuō)明了哪些方法不可行,理由是什么?

          HTMLPage.htm

          <!DOCTYPE?html?PUBLIC?"-//W3C//DTD?XHTML?1.0?Transitional//EN"?"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
          <html?xmlns="http://www.w3.org/1999/xhtml"?>
          <head>
          ????
          <title>1st</title>
          ????
          <script?language="javascript">
          ????
          function?AddOpt(text,val)
          ????
          {
          ????????
          var?slct?=?document.getElementById("Select1");
          ????????
          var?op?=?new?Option(text,val);
          ????????slct.add(op);
          ????}

          ????
          </script>
          </head>
          <body>
          <form?id="form1"?name="form1">
          ????
          <select?id="Select1"?multiple="multiple">
          ????????
          <option?selected="selected"?value="1">1</option>
          ????????
          <option?value="2">2</option>
          ????????
          <option?value="3">3</option>
          ????????
          <option?value="4">4</option>
          ????
          </select>
          ????
          <br?/>
          ????
          <input?id="showModalDialogWithoutArg"?type="button"?value="showModalDialogWithoutArg"?onclick="window.showModalDialog('HTMLPage2.htm');"/>
          ????
          <br?/>
          ????
          <input?id="showModalDialogWithArg"?type="button"?value="showModalDialogWithArg"?onclick="window.showModalDialog('HTMLPage2.htm',?window);"/>
          ????
          <br?/>
          ????
          <input?id="showModelessDialogWithoutArg"?type="button"?value="showModelessDialogWithoutArg"?onclick="window.showModelessDialog('HTMLPage2.htm');"/>
          ????
          <br?/>
          ????
          <input?id="showModelessDialogWithArg"?type="button"?value="showModalDialogWithArg"?onclick="window.showModelessDialog('HTMLPage2.htm',?window);"/>
          ????
          <br?/>
          ????
          <input?id="open"?type="button"?value="open"?onclick="window.open('HTMLPage2.htm');"/>
          </form>
          </body>
          </html>

          ?HTMLPage2.htm

          <!DOCTYPE?html?PUBLIC?"-//W3C//DTD?XHTML?1.0?Transitional//EN"?"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
          <html?xmlns="http://www.w3.org/1999/xhtml"?>
          <head>
          ????
          <title>2nd</title>
          ????
          <script?language="javascript">
          ????
          function?InsertToParent()
          ????
          {
          ????????
          var?slct?=?window.parent.document.getElementById("Select1");
          ????????
          ????????doc?
          =?slct.ownerDocument;
          ????????
          var?opt?=?doc.createElement('OPTION');
          ????????opt.value?
          =?"2nd?窗口";
          ????????opt.text?
          =?"2nd?窗口";
          ????????slct.options.add(opt);
          ????}

          ????
          ????
          function?InsertToOpener()
          ????
          {
          ????????
          var?slct?=?window.opener.document.getElementById("Select1");
          ????????
          ????????doc?
          =?slct.ownerDocument;
          ????????
          var?opt?=?doc.createElement('OPTION');
          ????????opt.value?
          =?"2nd?窗口";
          ????????opt.text?
          =?"2nd?窗口";
          ????????slct.options.add(opt);
          ????}

          ????
          ????
          function?InsertToTop()
          ????
          {
          ????????
          var?slct?=?window.top.document.getElementById("Select1");
          ????????
          ????????doc?
          =?slct.ownerDocument;
          ????????
          var?opt?=?doc.createElement('OPTION');
          ????????opt.value?
          =?"2nd?窗口";
          ????????opt.text?
          =?"2nd?窗口";
          ????????slct.options.add(opt);
          ????}

          ????
          ????
          function?InsertByParentFun()
          ????
          {
          ????????
          var?wnd?=?window.parent;
          ????????wnd.AddOpt(
          "2nd?窗口","2nd?窗口");
          ????}

          ????
          ????
          function?InsertByOpenerFun()
          ????
          {
          ????????
          var?wnd?=?window.opener;
          ????????wnd.AddOpt(
          "2nd?窗口","2nd?窗口");
          ????}

          ????
          ????
          function?InsertByTopFun()
          ????
          {???????
          ????????
          var?wnd?=?window.top;
          ????????wnd.AddOpt(
          "2nd?窗口","2nd?窗口");
          ????}

          ????
          ????
          function?InsertByArgFun()
          ????
          {
          ????????
          var?wnd?=?window.dialogArguments;
          ????????wnd.AddOpt(
          "2nd?窗口","2nd?窗口");
          ????}

          ????
          ????
          function?InsertWithArg()
          ????
          {
          ????????
          var?wnd?=?window.dialogArguments;
          ????????
          var?doc?=?wnd.document;
          ????????
          var?slct?=?doc.getElementById("Select1");
          ????????
          ????????doc?
          =?slct.ownerDocument;
          ????????
          var?opt?=?doc.createElement('OPTION');
          ????????opt.value?
          =?"2nd?窗口";
          ????????opt.text?
          =?"2nd?窗口";
          ????????slct.options.add(opt);
          ????}

          ????
          </script>
          </head>
          <body>
          ????
          <input?id="InsertToParent"?type="button"?value="InsertToParent"?onclick="InsertToParent()"?/>
          ????
          <br?/>
          ????
          <input?id="InsertToOpener"?type="button"?value="InsertToOpener"?onclick="InsertToOpener()"?/>
          ????
          <br?/>
          ????
          <input?id="InsertToTop"?type="button"?value="InsertToTop"?onclick="InsertToTop()"?/>
          ????
          <br?/>
          ????
          <input?id="InsertByParentFun"?type="button"?value="InsertByParentFun"?onclick="InsertByParentFun()"?/>
          ????
          <br?/>
          ????
          <input?id="InsertByOpenerFun"?type="button"?value="InsertByOpenerFun"?onclick="InsertByOpenerFun()"?/>
          ????
          <br?/>
          ????
          <input?id="InsertByTopFun"?type="button"?value="InsertByTopFun"?onclick="InsertByTopFun()"?/>
          ????
          <br?/>
          ????
          <input?id="InsertByArgFun"?type="button"?value="InsertByArgFun"?onclick="InsertByArgFun()"?/>
          ????
          <br?/>
          ????
          <input?id="InsertWithArg"?type="button"?value="InsertWithArg"?onclick="InsertWithArg()"?/>
          </body>
          </html>

          ?

          方法表格

          showModalDialogWithoutArg

          InsertToParent

          不能實(shí)現(xiàn)

          子窗口parent屬性為子窗口自身

          InsertToOpener

          不能實(shí)現(xiàn)

          子窗口opener屬性為空

          InsertToTop

          不能實(shí)現(xiàn)

          子窗口top屬性為子窗口自身

          InsertByParentFun

          不能實(shí)現(xiàn)

          子窗口parent屬性為子窗口自身

          InsertByOpenerFun

          不能實(shí)現(xiàn)

          子窗口opener屬性為空

          InsertByTopFun

          不能實(shí)現(xiàn)

          子窗口top屬性為子窗口自身

          InsertByArgFun

          不能實(shí)現(xiàn)

          沒有傳送參數(shù)給子窗口

          InsertWithArg

          不能實(shí)現(xiàn)

          沒有傳送參數(shù)給子窗口

          showModalDialogWithArg

          InsertToParent

          不能實(shí)現(xiàn)

          子窗口parent屬性為子窗口自身

          InsertToOpener

          不能實(shí)現(xiàn)

          子窗口opener屬性為空

          InsertToTop

          不能實(shí)現(xiàn)

          子窗口top屬性為子窗口自身

          InsertByParentFun

          不能實(shí)現(xiàn)

          子窗口parent屬性為子窗口自身

          InsertByOpenerFun

          不能實(shí)現(xiàn)

          子窗口opener屬性為空

          InsertByTopFun

          不能實(shí)現(xiàn)

          子窗口top屬性為子窗口自身

          InsertByArgFun

          可以實(shí)現(xiàn)

          ?

          InsertWithArg

          可以實(shí)現(xiàn)

          ?

          showModelessDialogWithoutArg

          InsertToParent

          不能實(shí)現(xiàn)

          子窗口parent屬性為子窗口自身

          InsertToOpener

          不能實(shí)現(xiàn)

          子窗口opener屬性為空

          InsertToTop

          不能實(shí)現(xiàn)

          子窗口top屬性為子窗口自身

          InsertByParentFun

          不能實(shí)現(xiàn)

          子窗口parent屬性為子窗口自身

          InsertByOpenerFun

          不能實(shí)現(xiàn)

          子窗口opener屬性為空

          InsertByTopFun

          不能實(shí)現(xiàn)

          子窗口top屬性為子窗口自身

          InsertByArgFun

          不能實(shí)現(xiàn)

          沒有傳送參數(shù)給子窗口

          InsertWithArg

          不能實(shí)現(xiàn)

          沒有傳送參數(shù)給子窗口

          showModelessDialogWithArg

          InsertToParent

          不能實(shí)現(xiàn)

          子窗口parent屬性為子窗口自身

          InsertToOpener

          不能實(shí)現(xiàn)

          子窗口opener屬性為空

          InsertToTop

          不能實(shí)現(xiàn)

          子窗口top屬性為子窗口自身

          InsertByParentFun

          不能實(shí)現(xiàn)

          子窗口parent屬性為子窗口自身

          InsertByOpenerFun

          不能實(shí)現(xiàn)

          子窗口opener屬性為空

          InsertByTopFun

          不能實(shí)現(xiàn)

          子窗口top屬性為子窗口自身

          InsertByArgFun

          可以實(shí)現(xiàn)

          ?

          InsertWithArg

          可以實(shí)現(xiàn)

          ?

          open

          InsertToParent

          不能實(shí)現(xiàn)

          子窗口parent屬性為子窗口自身

          InsertToOpener

          可以實(shí)現(xiàn)

          ?

          InsertToTop

          不能實(shí)現(xiàn)

          子窗口top屬性為子窗口自身

          InsertByParentFun

          不能實(shí)現(xiàn)

          子窗口parent屬性為子窗口自身

          InsertByOpenerFun

          可以實(shí)現(xiàn)

          ?

          InsertByTopFun

          不能實(shí)現(xiàn)

          子窗口top屬性為子窗口自身

          InsertByArgFun

          不能實(shí)現(xiàn)

          open方法不能在窗口間傳遞參數(shù)

          InsertWithArg

          不能實(shí)現(xiàn)

          open方法不能在窗口間傳遞參數(shù)



          Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1089313

          posted on 2006-09-07 12:39 SIMONE 閱讀(620) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 犍为县| 西乌珠穆沁旗| 长子县| 纳雍县| 长寿区| 永福县| 长宁县| 建湖县| 桐城市| 潮州市| 青铜峡市| 永丰县| 牟定县| 上思县| 辰溪县| 永善县| 台南县| 武川县| 定襄县| 南投市| 三台县| 怀集县| 泰和县| 天气| 岳阳市| 博兴县| 扎赉特旗| 车致| 武宁县| 黔江区| 沧州市| 吉隆县| 富锦市| 邹平县| 普格县| 深泽县| 三门县| 天门市| 葵青区| 肇州县| 长治县|