在 JavaScript 中打开窗口并插入 HTML

IT技术 javascript html insert
2021-01-22 06:43:06

我如何在 JavaScript 中打开一个新窗口并插入 HTML 数据而不是仅仅链接到 HTML 文件?

6个回答

我不建议你document.write像其他人建议的那样使用,因为如果你打开这样的窗口两次,你的 HTML 将被复制 2 次(或更多)。

改用innerHTML

var win = window.open("", "Title", "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=780,height=200,top="+(screen.height-400)+",left="+(screen.width-840));
win.document.body.innerHTML = "HTML";
我是这样打开窗口的: var win = window.open("", "Page Help", "newwindow", "width=1100, height=700, top=100, left=100"); win.document.body.innerHTML = "help_text";但是窗口是全屏的,没有标题。为什么它不尊重我的设置?
2021-03-16 06:43:06
是的,它总是出现在任何页面上,即使你不放,浏览器也会自动添加它
2021-03-23 06:43:06
请注意,如果您在该 HTML 中有 <script> 标签,它们将不会被执行。
2021-03-25 06:43:06
使用innerHTML 的好主意!
2021-03-30 06:43:06
对象存在于新创建的窗口上?
2021-04-08 06:43:06

您可以使用window.open在 javascript 中打开一个新窗口/选项卡(根据浏览器设置)。

通过使用document.write,您可以将 HTML 内容写入打开的窗口。

如果您嵌入了 JS 事件处理程序,也请调用document.close()after write(),因为这将触发 DOMContentLoad 事件。
2021-03-31 06:43:06

当您使用 创建新窗口时open,它会返回对新窗口的引用,您可以使用该引用通过其document对象写入新打开的窗口

下面是一个例子:

var newWin = open('url','windowName','height=300,width=300');
newWin.document.write('html to write...');
这是2019年写入新窗口的最佳答案
2021-03-17 06:43:06

以下是使用 HTML Blob 执行此操作的方法,以便您可以控制整个 HTML 文档:

https://codepen.io/trusktr/pen/mdeQbKG?editors=0010

这是代码,但 StackOverflow 阻止打开窗口(请参阅 codepen 示例):

const winHtml = `<!DOCTYPE html>
    <html>
        <head>
            <title>Window with Blob</title>
        </head>
        <body>
            <h1>Hello from the new window!</h1>
        </body>
    </html>`;

const winUrl = URL.createObjectURL(
    new Blob([winHtml], { type: "text/html" })
);

const win = window.open(
    winUrl,
    "win",
    `width=800,height=400,screenX=200,screenY=200`
);

很好的解决方案,这真的帮助我解决了一个项目,在该项目中为新窗口内容添加额外的 HTML 文件会出现问题。只是要补充一点,值得包含<meta charset="utf-8"><head>您的 HTML 中,以确保它将呈现任何非拉丁字符。
2021-04-04 06:43:06
这就是我一直在寻找的。这允许我使用 window.open 的“noopener”选项来防止新窗口访问我的主窗口。谢谢!
2021-04-07 06:43:06

您可以通过以下代码打开一个新的弹出窗口:

var myWindow = window.open("", "newWindow", "width=500,height=700");
//window.open('url','name','specs');

之后,您可以使用两者myWindow.document.write();myWindow.document.body.innerHTML = "HTML";

我建议您首先创建一个任何名称的新 html 文件。在这个例子中,我使用

新文件.html

并确保添加该文件中的所有内容,例如 bootstrap cdn 或 jquery,即所有链接和脚本。然后用一些 id 制作一个 div 或使用你的身体并给它一个id. 在这个例子中,我给id="mainBody"了我的 newFile.html<body>标签

<body id="mainBody">

然后使用打开这个文件

<script>    
var myWindow = window.open("newFile.html", "newWindow", "width=500,height=700");
</script>

并添加您想要添加到 body 标签中的任何内容。使用以下代码

<script>    
 var myWindow = window.open("newFile.html","newWindow","width=500,height=700");  

   myWindow.onload = function(){
     let content = "<button class='btn btn-primary' onclick='window.print();'>Confirm</button>";
   myWindow.document.getElementById('mainBody').innerHTML = content;
    } 

myWindow.window.close();
 </script>

它是如此简单。