0

我正在尝试将 HTML 代码放入框架中。

我用过的框架外:document.write进入?

框架是:

var frameTwitter = document.getElementById('FrameTwitter');
4

3 回答 3

3

为了写入 iFrame,您需要获取它的contentWindowor contentDocument

var frameTwitter = document.getElementById('FrameTwitter'),
    frameDocument = frameTwitter.contentWindow || frameTwitter.contentDocument;
frameDocument = frameDocument.document || frameDocument;

frameDocument.write('<p>Hello World!</p>');

演示:http: //jsfiddle.net/NTICompass/8Ekrs/1/

更新:您还可以使用window.frames来获取 iFrame 的window对象。

var frameDocument = window.frames.FrameTwitter.document;
frameDocument.write('<p>Hello World!</p>');

演示:http: //jsfiddle.net/NTICompass/8Ekrs/2/

于 2012-09-21T14:39:58.697 回答
0

由于您使用的是同一域中的 2 个文件,因此应该可以。在 上使用相对路径可能是理想的,iframe因为您必须匹配域、协议和端口,否则这将停止工作。

主页.html

<iframe src="Frame.html" id="FrameTwitter"></iframe>

<script type="text/javascript">
var frame = document.getElementById('FrameTwitter');
frame.writeInto('Some text here');
</script>

框架.html

<script type="text/javascript">
function writeInto(str) {
    document.writeln(str);
}
</script>

这样你就可以Frame.html在文件中设置你需要的功能,在那里测试功能,而不用担心跨框架开发。然后,一旦设置了您的功能,您就可以从父级触发它们。

于 2012-09-21T14:44:45.230 回答
0

您必须使用 postmessage API 请参阅https://developer.mozilla.org/en-US/docs/DOM/window.postMessage

火箭危险品也是正确的

通常,只有当且仅当执行它们的页面位于具有相同协议(通常都是 http)、端口号(http 的默认值为 80)和主机(模document.domain 被两个页面设置为相同的值)

于 2012-09-21T14:37:38.647 回答