a.htm<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD><BODY margin=0>
<SCRIPT LANGUAGE="JavaScript">
<!--
var html = "<html><body>hello<body></html>";window.showModalDialog("b.htm",window,"");//-->
</SCRIPT>
</BODY>
</HTML>
b.htm
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD><BODY>
<SCRIPT LANGUAGE="JavaScript">
<!--
document.write(window.dialogArguments.html);
//-->
</SCRIPT>
</BODY>
</HTML>

解决方案 »

  1.   

    谢谢楼上!这个办法我想过,当然也是可行的。但我的意思就是不用另外在写一个页面(b.htm),直接在a.htm中写b.htm的代码,然后直接显示出来,而不希望再加载一个物理页面!
      

  2.   

    不建立b.htm是不行的,第二个参数根本传不进去
      

  3.   

    呵呵,我的意思是 html 代码不是用参数传进去的,而是直接从传URL的地方传进去的;showModalDialog方法的原型不是showModalDialog(url,[pars],[condtions])吗?Html代码不是在pars参数传入,而是在url参数传入的,这样就可以不用构建第二个物理页面了吗?这一点我用"about:"和"Javascipt:"协议已经实现了,但问题是新打开的对话框(没有加载物理页面的)无法用 window.returnValue 与父页面交互啊!
      

  4.   

    你的showmodal不是物理构件
    请问window.returnValue你写在哪里?
      

  5.   

    var qz="test"
    var rc=window.showModalDialog("javascript:document.write(parent)",window,"");
    //print [object]
    var rc=window.showModalDialog("javascript:document.write(parent)",window,"");
    //print undefined
    //:(
      

  6.   

    To:chaobill(超鄙尔)
    你的 print [object] 和 print undefined 的代码有什么区别?To:scoutlin(梅川库子)
    var html="<input type='button' value='click' onclick='window.returnValue=123;window.close()'>";
    var result = window.showModalDialog("JavaScript:\""+html+"\"",null,"");
      

  7.   

    由于模态框加载的不是一个窗体, 所以 window.dialogArguments 和 window.returnValue 都不可用了, 通过 returnValue 的路走不通, 那你就换条路走呀:<SCRIPT LANGUAGE="JavaScript">
    var html="<input id=mm><input type='button' value='click' \
    onclick='window.clipboardData.setData(\"Text\", mm.value); window.close()'>";
    window.showModalDialog("about:"+html, null, "");
    result = window.clipboardData.getData("Text"); //用系统剪贴板传值
    alert("得到的回传值 = "+ result);
    </SCRIPT>
      

  8.   

    还可以做得完美点, 加个剪贴板内容回填:<SCRIPT LANGUAGE="JavaScript">
    var html="<input id=mm><input type='button' value='click' \
    onclick='window.clipboardData.setData(\"Text\", mm.value); window.close()'>";
    var oldClip = window.clipboardData.getData("Text");  //先把剪贴板里的内容存起来
    window.showModalDialog("about:"+html, null, "");
    result = window.clipboardData.getData("Text"); //用系统剪贴板传值
    alert("得到的回传值 = "+ result);
    window.clipboardData.setData("Text", oldClip); //再把原来的值赋回去
    </SCRIPT>
      

  9.   

    不行啊, meizz(梅花雪) 大哥!把模态窗口中的 onclick='window.clipboardData.setData(\"Text\", mm.value); window.close()'
    改成 onclick='alert(window.clipboardData.setData(\"Text\", mm.value)); window.close()'结果弹出 false ,说明这种情况下不能对剪贴板进行操作啊!!还有什么办法吗??
      

  10.   

    To: meizz(梅花雪)大哥:<SCRIPT LANGUAGE="JavaScript">window.clipboardData.setData("Text", "123456");  //我加了这句,先把剪贴板赋个值var html="<input id=mm><input type='button' value='click' \
    onclick='window.clipboardData.setData(\"Text\", mm.value); window.close()'>";
    var oldClip = window.clipboardData.getData("Text");  //先把剪贴板里的内容存起来
    window.showModalDialog("about:"+html, null, "");
    result = window.clipboardData.getData("Text"); //用系统剪贴板传值alert("得到的回传值 = "+ result);//这里弹出 123456,我在模态窗口中什么也没填,直接点按钮window.clipboardData.setData("Text", oldClip); //再把原来的值赋回去
    </SCRIPT>我的环境:winxp sp2 + ie6
      

  11.   

    不好意思, 我得收回我的回复了, 我只是在 EditPlus 里预览测试结果, 没想到它与在浏览器里直接打开页面的结果不同, 我在浏览器里直接浏览时发现我不能通过 about: 这种方式写入文本, 测试失败.
      

  12.   

    To:meizz(梅花雪)大哥通过 "javascript:'<html>...<html>'" 可以!^-^
      

  13.   

    把代码改成:<SCRIPT LANGUAGE="JavaScript">
    var html="<input id=mm><input type='button' value='click' \
    onclick='window.clipboardData.setData(\\\"Text\\\", mm.value); window.close()'>";
    var oldClip = window.clipboardData.getData("Text");  //先把剪贴板里的内容存起来
    window.showModalDialog("javascript:\""+html+"\"", null, "");
    result = window.clipboardData.getData("Text"); //用系统剪贴板传值
    alert("得到的回传值 = "+ result);
    window.clipboardData.setData("Text", oldClip); //再把原来的值赋回去
    </SCRIPT>在IE里就可以运行了但是在模态框中不能操作剪贴板
      

  14.   

    window 2000 server IE6 sp1 以下代码测试是通过的<SCRIPT LANGUAGE="JavaScript">
    window.clipboardData.setData("Text", "老剪贴板的值");
    var html="<input id=mm><input type='button' value='click' \
    onclick='window.clipboardData.setData(\\\"Text\\\", mm.value); window.close()'>";
    var oldClip = window.clipboardData.getData("Text");  //先把剪贴板里的内容存起来
    window.showModalDialog("javascript:\""+html+"\"", null, "");
    result = window.clipboardData.getData("Text"); //用系统剪贴板传值
    alert("得到的回传值 = "+ result);
    window.clipboardData.setData("Text", oldClip); //再把原来的值赋回去
    alert("老剪贴板的值 = "+ window.clipboardData.getData("Text"))
    </SCRIPT>
      

  15.   

    多谢 meizz(梅花雪)大哥我测试过了 win2000+IE6.0 下确实没问题! 但在 WinXp sp2 + IE6 下却无法通过,而且还有更有趣的问题:
    当我在地址栏中输入——
       E:\Code\test.htm :
          得到的回传值=老剪贴板的值
          老剪贴板的值=老剪贴板的值   http://localhost/Code/test.htm:
          得到的回传值=老剪贴板的值
          老剪贴板的值=老剪贴板的值   http://192.168.1.10/Code/test.htm:
          得到的回传值=undefined
          老剪贴板的值=undefined怎么会这样?郁闷~~
      

  16.   

    http://127.0.0.1/Code/test.htm 居然也是
          得到的回传值=undefined
          老剪贴板的值=undefined