Javascript 有没有一种方法可以在document.write之后通过JS访问iframe的主体?
问题在于回填土管。提供的脚本标记使用documentwrite在代码中写入自身。我不能按原样使用它,因为如果另一个adunit失败,它应该用作回填。 pageload之后,我将异步加载并检查一个VAST标记,如果出于某种原因,VAST标记无效或其他原因,则应使用提供的回填脚本标记 显然,我不能将提供的标记与document.write一起写入其中,因为整个内容在页面呈现后都会消失,而对于div.innerHTML来说,该标记毫无意义,因为它无法运行,更糟糕的是,它似乎再次使用document.write本身。(不确定) 我现在尝试将其放入iframe中,但是包含iframe的整个adunit大小都被弄乱了,因为document.body的每个默认值都有8px的边距。 例如,一个300x250px的adunit会有iframe主体的8px边距,而iframe在一个300x250px的adunit容器中,而300x250px本身会得到滚动条 我可以通过'domObj.contentWindow.document.body.style.margin=“0px”'轻松获取正文,但是在使用document.write之后,样式就消失了,更糟糕的是,我无法再访问正文Javascript 有没有一种方法可以在document.write之后通过JS访问iframe的主体?,javascript,iframe,document-body,Javascript,Iframe,Document Body,问题在于回填土管。提供的脚本标记使用documentwrite在代码中写入自身。我不能按原样使用它,因为如果另一个adunit失败,它应该用作回填。 pageload之后,我将异步加载并检查一个VAST标记,如果出于某种原因,VAST标记无效或其他原因,则应使用提供的回填脚本标记 显然,我不能将提供的标记与document.write一起写入其中,因为整个内容在页面呈现后都会消失,而对于div.innerHTML来说,该标记毫无意义,因为它无法运行,更糟糕的是,它似乎再次使用document.w
function addPassbackCode(iframe, code) {
var iframeDoc = iframe.contentWindow.document;
console.log(iframeDoc);
iframeDoc.open();
iframeDoc.write(code);
iframeDoc.close();
console.log(iframeDoc);
}
上面很好地输出了#文档两次
function addPassbackCode(iframe, code) {
var iframeDoc = iframe.contentWindow.document;
console.log(iframeDoc.body);
iframeDoc.open();
iframeDoc.write(code);
iframeDoc.close();
console.log(iframeDoc.body);
}
这一个输出
和null
我只是假设提供给我的脚本标记再次使用document.write,但这会使我无法访问iframe中的主体吗
在我将标记添加到iframe中之后,是否有任何方法可以动态更改iframe中的主体样式?
我讨厌iFrame,几乎从不使用它们,但这似乎是唯一的方法。
所有这些都应该在好的老式普通JS中完成。在console.log()
的时候,iFrame的主体似乎还没有准备好。添加.onload()
eventhandler似乎可以解决这个问题
function addPassbackCode(iframe, code) {
var iframeDoc = iframe.contentWindow.document;
console.log(iframeDoc.body);
iframeDoc.open();
iframeDoc.write(code);
iframeDoc.close();
iframe.onload = function() {
console.log(iframe.contentWindow.document.body);
};
}