将内容添加到新的打开的窗口

我不知道如何解决这个问题,我正在尝试阅读很多文章,但没有人回答这个问题。

我需要打开一个已经编码好的页面(在同一个域内)的新窗口并添加一些内容。

问题是,如果我使用OpenWindow.write()页面尚未加载或覆盖所有内容,只有通过写入添加的代码出现。

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

output是我需要追加的代码。

我需要它至less在Firefox,IE和GC上工作。

提前致谢。 如果我需要使用JQuery,这不是问题。

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> 

当你想打开新的标签页/窗口(取决于你的浏览器configuration默认值):

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

当输出是一个Object ,你想得到JSON,例如(也可以生成任何types的文件,甚至在Base64编码的图像)

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

更新

Google Chrome(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; 

这是你可以尝试的

  • 写一个函数说init()里面mypage.html做的HTML的东西(追加或什么)
  • 而不是OpenWindow.document.write(output); 在dom准备好的时候调用OpenWindow.init()

所以父窗口将有

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

和孩子

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

在加载页面后调用document.write ,将消除所有内容并将其replace为您提供的参数。 而是使用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>'); }); 

如果你想打开一个页面或窗口发送数据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; } });