将内容添加到新的打开的窗口
我不知道如何解决这个问题,我正在尝试阅读很多文章,但没有人回答这个问题。
我需要打开一个已经编码好的页面(在同一个域内)的新窗口并添加一些内容。
问题是,如果我使用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; } });