5

我在访问作为加载到 iframe 中的页面的一部分的框架时遇到问题。框架嵌套在多个框架集中。

我的 html 看起来像这样:

<iframe name="sourceframe" src="siteindex.html">
    #document <-- this appears in the dom tree. Not sure if it's relevant.
        <html>
            <head></head>
            <frameset>
                ...other frames
                <frameset>
                    <frame name="targetframe" src="sitesubpage.html">
                        ...I want to access this frame and replace the contents with a different html page...
                    </frame>
                </frameset>
            </frameset>
        </html>
</iframe>

我已经阅读了类似的问题,其中没有一个有我可以开始工作的解决方案。

任何建议将不胜感激。

4

2 回答 2

8
window.frames['sourceframe'].frames['targetframe'].location.href = 'new_html_page';

FF 和 Chrome 中只有frames收藏window,IE 和 Opera 中也有document。当您纠正时间时,上述代码有效(经过测试)。

尝试在更改 之前使用一些超时href,或从 触发更改#targetframe。您还可以将onload事件侦听器附加到iframe,并触发其中的更改。还有一个,您可以放置​​在结束标记iframe之前创建的脚本,然后您可以使用它来更改页面的深度...bodywindow.onload

于 2013-07-10T23:06:29.613 回答
0

你可以给你的frame元素name='targetframe'一个id='targetframe'并做类似的事情:

function E(e){
  return document.getElementById(e);
}
function getChildFrame(id){
  var t = E(id);
  var f = t.contentWindow || t.contentDocument;
  if(f.document)f = f.document;
  return f;
}
var tf = getChildFrame('targetframe');
tf.style.backgroundColor = '#007';

http://www.w3schools.com/jsref/prop_frame_contentwindow.asp

http://www.w3schools.com/jsref/prop_win_frames.asp

更多细节。当然,同源政策适用。换句话说frame,未经许可,您无法访问他人的 .

顺便说一句,您也可以使用frames数字访问数组。

于 2013-07-10T22:35:26.773 回答