Javascript 从弹出窗口设置父页面文本框

Javascript 从弹出窗口设置父页面文本框,javascript,Javascript,我正在做以下事情: 1) 用户点击一个页面,它会打开一个弹出窗口。 2) 在弹出窗口中,我尝试在父页面中设置一个文本框 问题是该代码在IE中有效,但在FireFox中不起作用。我正在使用FF 3.6.13进行测试。我假设它与window.opener.document.getElementById或self.opener.document.getElementById有关。我试了两条线,它们在FF中不起作用 function passValues(comment_text_box_id) {

我正在做以下事情:

1) 用户点击一个页面,它会打开一个弹出窗口。 2) 在弹出窗口中,我尝试在父页面中设置一个文本框

问题是该代码在IE中有效,但在FireFox中不起作用。我正在使用FF 3.6.13进行测试。我假设它与window.opener.document.getElementById或self.opener.document.getElementById有关。我试了两条线,它们在FF中不起作用

function passValues(comment_text_box_id)
{
    var checkbox_values = "";
    for(i=0; i<document.form1.elements.length; i++)
    {
        if(document.form1.elements[i].type=="checkbox")
        {
            if(document.form1.elements[i].checked == true)
            {

                if(checkbox_values == ""){

                    checkbox_values = document.form1.elements[i].value;

                }
                else{

                    checkbox_values = checkbox_values + "," + document.form1.elements[i].value;

                }

            }
        }
    }


    //window.opener.document.getElementById(comment_text_box_id).innerText = window.opener.document.getElementById(comment_text_box_id).innerText + checkbox_values;
    self.opener.document.getElementById(comment_text_box_id).innerText = self.opener.document.getElementById(comment_text_box_id).innerText + checkbox_values;

}
函数传递值(注释\文本\框\ id)
{
var复选框_值=”;

for(i=0;iinnerText仅受MSIE支持。在其他浏览器中,创建包含给定文本的TextNode并将TextNode插入目标元素。 将最后一行替换为:

self.opener.document.getElementById(comment_text_box_id)
 .appendChild(self.opener.document.createTextNode(checkbox_values));
(如果文本不包含html标记,则使用innerHTML)

编辑: 用Javascript框架替换ajax这个词..Jquery、Mootools等

为什么不使用ajax并创建一个模式html“弹出窗口”,这样您就可以始终保持在父页面的上下文中,并且可以根据xmlHttpRequest对象返回的内容修改“父”页面。使用此技术将受益匪浅,因为它可以防止页面被弹出窗口拦截器阻止


这是我在搜索
模式html对话框时找到的一个链接

谢谢你的回复。我没有完全理解你上面所说的。你能提供一个例子吗?你是说我应该像var x=document.createTextNode这样做(“添加了一个新的文本节点!”)。如何将值传递回父页面文本框。抱歉,有点困惑。我刚刚试用过。效果很好。感谢您的帮助。因此,我只是使用FF 3.6.13对其进行了测试,但它在该浏览器上不起作用。我在家使用了FF 2.x(我不记得该版本)。还有其他想法吗?所以您必须使用调试器(我不是人工调试服务)。这在FF3中的工作方式与在其他浏览器中的工作方式相同。感谢与示例的链接,这非常有帮助。在阅读您的文章之前,我注意到它现在在我之前测试的同一浏览器中对我有效。我重新安装了FF(相同版本),所以可能已经解决了。再次感谢您的帮助。我很感激。事实上,在我今天测试时,弹出窗口拦截器阻止了我的弹出窗口。所以我可能会走这条路。谢谢您的输入,我很感激。