【问题标题】:Setting parent page text box from popup从弹出窗口设置父页面文本框
【发布时间】:2011-01-17 23:35:06
【问题描述】:

我正在做以下事情:

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

问题是代码在 IE 中工作,但在 Fire Fox 中不工作。我正在使用 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;

}

【问题讨论】:

    标签: javascript


    【解决方案1】:

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

    self.opener.document.getElementById(comment_text_box_id)
     .appendChild(self.opener.document.createTextNode(checkbox_values));
    

    (如果文本不包含 html 标记,则使用 innerHTML)

    【讨论】:

    • 感谢您的回复。没有完全按照你上面所说的来关注你。你能举个例子吗?你是说我应该做这样的事情 var x = document.createTextNode(' A new text node has been appended!')。如何将值传递回父页面文本框。抱歉有点糊涂了。
    • 我刚试了一下。它工作得很好。感谢您的帮助。
    • 所以我只是用 FF 3.6.13 对其进行了测试,但它在该浏览器上不起作用。我确实在家里用 FF 2.x 工作过(我不记得版本了)。还有其他想法吗?
    • 所以你必须使用你的调试器(我不是人工调试服务)。这在 FF3 中的工作方式与在其他浏览器中的工作方式相同。 jsfiddle.net/doktormolle/XtDNC
    • 感谢您提供示例链接,这很有帮助。在我阅读您的帖子之前,我注意到它现在可以在我之前测试过的同一个浏览器中为我工作。我确实重新安装了FF(相同版本),所以也许修复了它。再次感谢您的所有帮助。我很感激。
    【解决方案2】:

    编辑: 用 Javascript Framework 替换 ajax 这个词.. Jquery, Mootools, Etc...

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

    这是我搜索modal html dialog boxhttp://www.dhtmlgoodies.com/scripts/modal-message/demo-modal-message.html时找到的链接

    【讨论】:

    • 实际上,在我今天测试时,弹出窗口阻止程序阻止了我的弹出窗口。所以我可能会走这条路。感谢您的意见,我很感激。
    猜你喜欢
    • 1970-01-01
    • 2018-06-27
    • 2011-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多