在HTML中IFrame对象有啥方法和属性,可以改变其中显示的内容,也就是改变地址

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在HTML中IFrame对象有啥方法和属性,可以改变其中显示的内容,也就是改变地址相关的知识,希望对你有一定的参考价值。

怎么改变指向的URL

参考技术A <iframe> 的参数设定如下:
例子: <iframe src="iframe.html" name="test" align="MIDDLE" width="300" height="100" marginwidth="1" marginheight="1" frameborder="1" scrolling="Yes">

src="iframe.html"
欲显示於此框窗的文件来源除档案名称,必要加上相对或绝对路径。
name="test"
此框窗名称,这是连结标记的 target 参数所 要的,
align="MIDDLE"
可选值为 left, right, top, middle, bottom,作用不大
width="300" height="100"
框窗的宽及长,以 pixels 为单位。
marginwidth="1" marginheight="1"
该插入的文件与框边所保留的空间。
frameborder="1"
使用 1 表示显示边框, 0 则不显示。(可以是 yes 或 no)
scrolling="Yes"
使用 Yes 表示容许卷动(内定), No 则不容许卷动。
参考技术B iframe对象是一个window对象,使用location.href改变地址,例如:
<iframe name=iii></iframe>

iii.location.href='http://www.baidu.com/';本回答被提问者采纳
参考技术C <iframe id='ifr' src='1.asp'></iframe>
<input type='button' value='按钮' onclick="aa()">
<script>
function aa()
document.ifr.src='2.asp'//把id号为ifr的控件的src属性的链接改为2.asp

</script>
ifr是iframe的id号,

iframe.contentWindow 属性:关于contentWindow和contentDocument区分

 

定义和用法

  contentDocument 属性能够以 HTML 对象来返回 iframe 中的文档,可以通过所有标准的 DOM 方法来处理被返回的对象

  语法:frameObject.contentWindow,或者 iframeObject.contentWindow(不是jquery对象)

 

  用iframe嵌套页面时,如果父页面要获取子页面里面的内容,可以使用contentWindow或者contentDocument,其区别如下:

  1、contentWindow  这是个只读属性,返回指定的iframe的窗口对象。它虽然不是标准的一部分,但各个主流浏览器都支持。

  2、contentDocument  Firefox 支持,IE6,IE7都不支持,IE8开始支持,需要如此访问 document.frames[‘J_mainframe‘].document。

  兼容获取document对象:

var getIFrameDoc = function(){
    var iobj = document.createElement("iframe");
    document.getElementsByTagName("body")[0].appendChild(iobj);
    return iobj.contentDocument || iobj.contentWindow.document;
}

  基本使用:

1、document.getElementById("myiframe").contentWindow,得到iframe对象后,就可以通过contentWindow得到iframe包含页面的window对象,然后就可以正常访问页面元素了;

2、$("#myiframe")[0].contentWindow,jquery选择器获得iframe,先把jquery对象转换为DOM对象,或者使用get()方法转换;

3、$("#myiframe")[0].contentWindow.$("#dd").val(),可以在得到iframe的window对象后接着使用jquery选择器进行页面操作;

4、$("#myiframe")[0].contentWindow.username="zhangsan"; 可以通过这种方式向iframe页面传递参数,在iframe页面window.username就可以获取到值,username是自定义的全局变量

5、在iframe页面通过parent可以获得主页面的window,接着就可以正常访问父亲页面的元素了;

6、parent.$("#frame_A")[0].contentWindow.document.getElmentById("#frame_B"); 同级iframe页面之间调用,需要先得到父亲的window,然后调用同级的iframe得到window进行操作;

技术分享图片
//在子级iframe设置 父级 iframe ,或 孙级 iframe 高度。
function showIframeH(){
    var parentWin = parent.document.getElementById("test");
    if(!parentWin) return false;

    var sub = parentWin.contentWindow.document.getElementById("test2");
    if(!sub) return false;
    
    var thirdHeight = sub.contentWindow.document.body.offsetHeight; //第三层 body 对象
    
    sub.height = thirdHeight; //设置第二层 iframe 的高度
    
    var secondHeight = parentWin .contentWindow.document.body.offsetHeight; //第二层 body 对象
    parentWin .height = secondHeight; //设置第一层 iframe 的高度
}
技术分享图片

 

一、在使用iframe的页面时,要操作这个iframe里面的DOM元素可以用:contentWindow、contentDocument

1、先获取iframe里面的window对象,再通过这个对象,获取到里面的DOM元素

例子:

var ifr = document.getElementById("iframe");
ifr.contentWindow.document.getElementById("XXXXX")

<iframe src="a.html" id=""></iframe>

  ifr.contentWindow 这里,返回的是iframe的window对象,所以后面可以接着调用document方法,再接着调用getElementByTagName。那么就可以对iframe里面的元素进行操作了。

二、在iframe本页面,要操作这个iframe的父页面的DOM元素(即嵌套这个iframe的页面)可以用:

  window.parent、window.top(这里的TOP是获取的顶层,即有多层嵌套iframe的时候使用)

var ifr = document.getElementByTagName("iframe");
ifr.parent.document.getElementById("XXXXX")

<iframe src="a.html" id=""></iframe>

实例:

  top.$("iframe[name=‘iframeWindow‘]")[0].contentWindow.$("#inside_tableElement"),这样才能获取到iframe里的元素,
  注意:top.$("iframe[name=‘iframeWindow‘]").eq(0).$("#inside_tableElement"),是获取不到的
 
  再可以看看之前写的这篇博客:jquery 获取父窗口的元素、父窗口、子窗口

以上是关于在HTML中IFrame对象有啥方法和属性,可以改变其中显示的内容,也就是改变地址的主要内容,如果未能解决你的问题,请参考以下文章

JS中document对象和window对象有啥区别么?

javascript_获取iframe框架中元素节点的属性值

iframe.contentWindow 属性:关于contentWindow和contentDocument区分

IFrame 和 Frame 有啥区别?

mongodb内嵌数据对象有啥属性

iframe 内显示的网页 只显示改网页的某一部分!