javascript 向新打开的窗口添加内容

lf3rwulv  于 2022-12-25  发布在  Java
关注(0)|答案(6)|浏览(235)

我不知道如何解决这个问题,我已经尝试阅读许多职位,但没有人回答它。
我需要打开一个新的窗口与一个网页已经编码(在同一领域内),并添加一些内容。
问题是,如果我使用OpenWindow.write(),页面还没有加载,或者它覆盖了所有内容,只有通过write添加的代码出现。

var OpenWindow = window.open('mypage.html','_blank','width=335,height=330,resizable=1');
OpenWindow.document.write(output);

output是我需要附加的代码。
我需要它至少在Firefox,IE和GC上工作。
如果我需要使用JQuery,这不是问题。

wmomyfyw

wmomyfyw1#

当您要打开新选项卡/窗口时(取决于您的浏览器配置默认值):

output = 'Hello, World!';
window.open().document.write(output);

例如,当输出为Object且You want get JSON时(也可以生成任何类型的文档,甚至是以Base64编码的图像)

output = ({a:1,b:'2'});
window.open('data:application/json;' + (window.btoa?'base64,'+btoa(JSON.stringify(output)):JSON.stringify(output)));
    • 更新**

谷歌浏览器(60.0.3112.90)阻止此代码:
Not allowed to navigate top frame to data URL: data:application/json;base64,eyJhIjoxLCJiIjoiMiJ9
当您要将一些数据附加到现有页面时

output = '<h1>Hello, World!</h1>';
window.open('output.html').document.body.innerHTML += output;

output = 'Hello, World!';
window.open('about:blank').document.body.innerText += output;
5sxhfpxr

5sxhfpxr2#

parent.html中:

<script type="text/javascript">
    $(document).ready(function () {
        var output = "data";
        var OpenWindow = window.open("child.html", "mywin", '');
        OpenWindow.dataFromParent = output; // dataFromParent is a variable in child.html
        OpenWindow.init();
    });
</script>

child.html中:

<script type="text/javascript">
    var dataFromParent;    
    function init() {
        document.write(dataFromParent);
    }
</script>
jk9hmnmh

jk9hmnmh3#

以下是您可以尝试的方法

  • 在mypage.html中编写一个函数init()来执行html操作(附加或其他操作)
  • 当dom就绪时调用OpenWindow.init()而不是OpenWindow.document.write(output);

因此父窗口将具有

OpenWindow.onload = function(){
       OpenWindow.init('test');
    }

在孩子身上

function init(txt){
        $('#test').text(txt);
    }
xriantvc

xriantvc4#

加载页面后调用document.write时,它将删除所有内容并替换为您提供的参数。请改用DOM方法添加内容,例如:

var OpenWindow = window.open('mypage.html','_blank','width=335,height=330,resizable=1');
var text = document.createTextNode('hi');
OpenWindow.document.body.appendChild(text);

如果你想使用jQuery,你可以使用一些更好的API,例如:

var OpenWindow = window.open('mypage.html','_blank','width=335,height=330,resizable=1');
$(OpenWindow.document.body).append('<p>hi</p>');

如果您需要在新窗口的DOM准备好后运行代码,请尝试:

var OpenWindow = window.open('mypage.html','_blank','width=335,height=330,resizable=1');
$(OpenWindow.document.body).ready(function() {
    $(OpenWindow.document.body).append('<p>hi</p>');
});
qrjkbowd

qrjkbowd5#

如果你想打开一个页面或窗口发送数据POST或GET方法,你可以使用这样的代码:

$.ajax({
    type: "get",  // or post method, your choice
    url: yourFileForInclude.php, // any url in same origin
    data: data,  // data if you need send some data to page
    success: function(msg){
                console.log(msg); // for checking
                window.open('about:blank').document.body.innerHTML = msg;  
               }
});
lvmkulzt

lvmkulzt6#

那就更简单了!
只需将下面的代码放在<head> </head>代码之间,所有链接都会在新窗口中打开:

<base target="_blank">

相关问题