本帖最后由 tao8812100010 于 2011-01-04 09:36:11 编辑

解决方案 »

  1.   

    function key_short()
    改成 (试试)
    function key_short( event)  { // 键盘事件加event
       var evt = event ? event : (window.event ? window.event : null); 
       if (event.keyCode == 13) {
                document.getElementById("b1").focus();
            }
       ....
    }
      

  2.   

    lz 精神可嘉,不过技术仍需努力,呵呵俺试了下,终于实现了另,http://topic.csdn.net/u/20101230/09/c7d1d137-8a92-47ef-932d-1113db069a3c.html
    也顺便结贴吧,嘿嘿L@_@K
    <html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" /><script type="text/javascript">var oPopup = window.createPopup();function InitializePopup() {
        var pbody = oPopup.document.body;
        pbody.style.border = "solid black 1px";
        pbody.innerHTML = "";    var btna = oPopup.document.createElement("button");
        btna.innerHTML = "电影(a)";
        oPopup.document.body.appendChild(btna);    btna.onclick = function() {
            txtHint.innerHTML = "<table><tr><td>恐怖片</td><td>爱情片</td></tr></table>";
        };    var btnb = oPopup.document.createElement("button");
        btnb.innerHTML = "电视剧(b)";
        oPopup.document.body.appendChild(btnb);    btnb.onclick = function() {
            txtHint.innerHTML = "<table><tr><td>内地电视剧</td><td>港台电视剧</td></tr></table>";
        };    var txtHint = oPopup.document.createElement("div");
        txtHint.id = "txtHint";
        oPopup.document.body.appendChild(txtHint);
    }function ShowPopup()
    {
        oPopup.show(100,0,800,600,document.body)
    }function key_short(){
        if (event == null)
        {
            alert("event is null: true.");
        }
        else
        {
            //alert(window.event.keyCode);
            var key = window.event.keyCode;
            if(key==65) a();
            if(key==66) b();
        }
    }function a(){
        oPopup.document.getElementById("txtHint").innerHTML="<table><tr><td>恐怖片</td><td>爱情片</td></tr></table>"
    }
    function b(){
        oPopup.document.getElementById("txtHint").innerHTML="<table><tr><td>内地电视剧</td><td>港台电视剧</td></tr></table>"
    }InitializePopup();</script>
    </head><body>
    <button onclick="ShowPopup()">Create pop-up!</button>
    </body>
    <script type="text/javascript">
    <!--
    document.body.onkeydown = function() {
        if (oPopup.isOpen)
        {
            //alert(event.keyCode);
            key_short();
            ShowPopup();
        }
    };
    //-->
    </script>
    </html>
      

  3.   

    非常感谢yixianggao 帮助我很多次了 元旦假期期间我尝试着搞了很多次 最终都以失败告终 先结贴给分 回头慢慢细看 顺便膜拜一下
      

  4.   

    lz 客气了,呵呵主要思路如下:
    既然从 popup 中无法获取到 event 对象,
    转而尝试能否从父对象(即 window)上获取 event,实验证明可以获取到。
    另 var oPopup = window.createPopup(); 仅在页面加载时创建一次,而非每次点击按钮时创建!对 document.body.onkeydown 中代码稍作调整,
    L@_@K
    <html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" /><script type="text/javascript">var oPopup = window.createPopup();function InitializePopup() {
        var pbody = oPopup.document.body;
        pbody.style.border = "solid black 1px";
        pbody.innerHTML = "";    var btna = oPopup.document.createElement("button");
        btna.innerHTML = "电影(a)";
        oPopup.document.body.appendChild(btna);    btna.onclick = function() {
            txtHint.innerHTML = "<table><tr><td>恐怖片</td><td>爱情片</td></tr></table>";
        };    var btnb = oPopup.document.createElement("button");
        btnb.innerHTML = "电视剧(b)";
        oPopup.document.body.appendChild(btnb);    btnb.onclick = function() {
            txtHint.innerHTML = "<table><tr><td>内地电视剧</td><td>港台电视剧</td></tr></table>";
        };    var txtHint = oPopup.document.createElement("div");
        txtHint.id = "txtHint";
        oPopup.document.body.appendChild(txtHint);
    }function ShowPopup()
    {
        oPopup.show(100,0,800,600,document.body)
    }function key_short(){
        if (event == null)
        {
            alert("event is null: true.");
        }
        else
        {
            //alert(window.event.keyCode);
            var key = window.event.keyCode;
            if(key==65) a();
            if(key==66) b();
        }
    }function a(){
        oPopup.document.getElementById("txtHint").innerHTML="<table><tr><td>恐怖片</td><td>爱情片</td></tr></table>"
    }
    function b(){
        oPopup.document.getElementById("txtHint").innerHTML="<table><tr><td>内地电视剧</td><td>港台电视剧</td></tr></table>"
    }InitializePopup();</script>
    </head><body>
    <button onclick="ShowPopup()">Create pop-up!</button>
    </body>
    <script type="text/javascript">
    <!--
    document.body.onkeydown = function() {
        if (oPopup.isOpen)
        {
            // Debug:
            // 打开 alert 时,ShowPopup 须同时打开!        //alert(event.keyCode);
            key_short();
            //ShowPopup();
        }
    };
    //-->
    </script>
    </html>
      

  5.   

    document.body.onkeydown = function() {
        if (oPopup.isOpen)
        {
            // Debug:
            // 打开 alert 时,ShowPopup 须同时打开!        //alert(event.keyCode);
            key_short();
            //ShowPopup();
        }
    }
    对这里有些模糊 这个document指的是当前的父窗体吗?
      

  6.   

    document 是父窗体的,即 window.document!
      

  7.   

    原来如此  刚才去吃饭了 这位大虾 还有个疑问 function a(){
        oPopup.document.getElementById("txtHint").innerHTML="<table><tr><td>恐怖片</td><td>爱情片</td></tr></table>"
    }
    function b(){
        oPopup.document.getElementById("txtHint").innerHTML="<table><tr><td>内地电视剧</td><td>港台电视剧</td></tr></table>"
    }InitializePopup();
    这里为什么需要写InitializePopup()这个方法 InitializePopup()方法的作用就是为Popup窗体填写内容 在SHOW方法里已经把BODY对象赋过去了 为什么还需要调用这个方法呢?
      

  8.   

    对了对了 还有一个问题  var txtHint = oPopup.document.createElement("div");
        txtHint.id = "txtHint";
        oPopup.document.body.appendChild(txtHint);
    把txtHint赋值给txtHint的ID?有什么必要的作用吗?
      

  9.   

    InitializePopup(),该方法仅为已创建的 popup 窗口添加了所需控件,但并未显示 popup 窗口。而 ShowPopup() 仅在指定的位置显示已创建 popup 窗口,而不再创建新的 popup 窗口。txtHint.id = "txtHint";
    是为了指定 id,"txtHint" 为字符串,以便通过 getElementById 查找。
    function a(){
        oPopup.document.getElementById("txtHint").innerHTML="<table><tr><td>恐怖片</td><td>爱情片</td></tr></table>"
    }
      

  10.   


    ID明白了 但是这个InitializePopup()方法是怎么调用到的呢?因为在ShowPopup()方法中没有直接调用那个方法 那在显示该窗体的时候InitializePopup()方法是如何被调用到的?对于这点我不明白
      

  11.   

    InitializePopup() 方法是在页面加载时执行的,
    即在页面加载时创建 Popup 窗口,但处于隐藏状态,
    而 ShowPopup() 仅将 Popup 窗口从隐藏状态转为显示状态而已。
      

  12.   


    Web 开发常用手册DHTML 参考手册 -- 其中有对 popup 的详细说明
    http://download.csdn.net/source/308913JScript 语言参考
    http://download.csdn.net/source/308916CCS 样式表中文手册
    http://download.csdn.net/source/304124