window.open:如何在一个函数中创建窗口并更改其内容?

时间:2018-03-29 16:38:35

标签: javascript

这是一个问题。我试图在一个函数中创建新窗口并使用document.write更改其内容,但它不起作用。

这是一个按钮:

<button class="btn" type="button" onclick="showInformation()">send message</button>

这是一个功能:

function showInformation() {
    var opened_window = window.open("", "opened_window", "width=300,height=300,menubar=no,location=no,resizable=no,scrollbars=no,status=no");
    opened_window.window.onload = function() {
    opened_window.document.write(
        "NAME: " + document.getElementById("inf_name").value 
        + "<br/>EMAIL: " + document.getElementById("inf_email").value 
        + "<br/>SUBJECT: " + document.getElementById("inf_subject").value 
        + "<br/>MESSAGE: " + document.getElementById("inf_textarea").value);
    }
}

但是当我点击按钮时,打开的窗口总是空的。我试图只做opened_window.document.onloadopened_window.onload,但没有任何改变。 Chrome控制台中没有错误。它只是不起作用。

但是,当我在函数(global var)外面放置window.open并在函数中只留下opened_window.document.write时,它开始使用预打开的窗口。

我不明白为什么它不想在功能上工作。如何在一个函数中打开新窗口并更改其内容而不使用全局变量?感谢。

1 个答案:

答案 0 :(得分:0)

您需要在声明后写下窗口的内容。 您可以在此处查看示例:https://jsfiddle.net/andersoncontreira/xpvt214o/4253/

来源示例:

window.showInformation = function() {
var opened_window = window.open("", "opened_window", "width=300,height=300,menubar=no,location=no,resizable=no,scrollbars=no,status=no");

var d = document.createElement("div");
var name = (document.getElementById("inf_name") != null)? ocument.getElementById("inf_name").value : "Não informado";
var email = "Não informado";
var subject = "Não informado";
var text = "Não informado";

var html = "NAME: " + name 
    + "<br/>EMAIL: " + email
    + "<br/>SUBJECT: " + subject
    + "<br/>MESSAGE: " + text;
d.innerHTML = html;    

opened_window.document.body.appendChild(d)

}