zoukankan      html  css  js  c++  java
  • iframe

    1. 修改第一个 <iframe> 元素 (索引为 0) 的 src 属性值:window.frames[0].location = "https://www.runoob.com/";
    2. window.frames[]在Firefox下无法兼容的解决方式

      1.    html代码段: <iframe id="fr" src="ProjectTree.aspx?IsFree=true&f=yes&IsCheckProjectAuthority=false" frameborder="0" scrolling="no" style="height:100%; 100%;"></iframe>

        JavaScript代码段: 1 window.frames["fr"].XX方法(); //XX方法在此iframe内容中已经定义;这段代码在IE下能正常调用,但在Firefox下报错,因为Firefox无法通过id属性值获取到此iframe的window对象,Firefox是通过name属性值获取它的

          解决方式,修改html代码段,如下: <iframe id="fr" name="fr" src="ProjectTree.aspx?IsFree=true&f=yes&IsCheckProjectAuthority=false" frameborder="0" scrolling="no" style="height:100%; 100%;"></iframe>

        区别在于:新增name属性,它的属性值跟id属性值保持一致,在Firefox中会读取name属性值去获取到对应名称的iframe的window对象。 如果要获取iframe的element对象,比如要设置它的src属性值,这里建议用document.getElementById方法获取。

    3.   1)    如何获取子iframe框架中的window对象呢(也就是获取当前window对象的子窗体iframe)?
      获取指定的iframe的window对象有三种方式:
      a.通过window.frames[索引]:比如如果有两个当前窗体有两个iframe一个name=test1,一个name=test2,那么我想要获取name为test2的iframe我就可以这样使用:window.frames[1],获取的就是当前窗体中包含的名词为test2的子窗体
      b.通过window.frames[“iframe名称”]:通过iframe的名词获取首先iframe得有name属性,这样才可以获取到,比如当前窗体包含了一个name=main的iframe,则访问这个iframe直接使用window.frames[“main”]就可以了。
      c.第三种方式其实就是通过document对象获取iframe,接着再获取iframe中的window对象,如:window.document.getElementById(“iframeid”).contentWindow
      总结:这三种方式其实都是获取子窗体iframe的window对象,可以直接操作iframe的window对象属性,可以直接操作该iframe中的函数。关键是获取到每个iframe中的window,这样才能获取到其的函数和document对象。
      注意:也许会遇到奇葩的情况,比如通过window.frames[“iframe的名词”]. frames[“iframe的名词”]. frames[“iframe的名称”]获取指定名词的iframe,但是获取不到,却也存在该iframe,此时该怎么办呢?通过名称获取不到,可以通过索引获取啊。
      2)    parent属性如何使用
      刚才说了一下如何访问当前window对象子窗体iframe,那么,如何访问当前window窗体的父窗体呢?就是通过window对象的parent属性。
      parent.window获取的就是父窗体的window对象。比如如果要调用父窗体的main函数,就可以使用parent.window.main();
      3)    top属性如何使用
      如何获取一个iframe最顶层的window对象呢?可以使用top.window,获取的就是iframe最顶层的窗口。调用最顶层的方法一样调用,top.window.method
      4.    如何调用iframe中的函数,如果操作iframe中的标签元素?
      通过3的分析可以获取iframe的window对象,那么操作iframe中的函数和标签就变得简单了,因为操作iframe中的函数其实就是调用iframe中window中的函数,直接用iframe的window对象调用函数就可以了;如:当前window中包含一个iframe,iframe框架中有一个main函数,那么如何通过父窗体调用子窗体的函数呢?有三种方式:
      window.frames[索引].main();
      window.frames[“iframe名称”].main();
      window.document.getElementById(“iframeId”).contentWindow.main();
      现在iframe框架中的方法可以通过window对象直接调用,但是如何操作iframe中的标签元素呢?直接用iframe的window对象的document属性对象就可以操作了。获取到document对象,想怎么操作标签元素就怎么操作标签元素。
      window.frames[索引].document;
      window.frames[“iframe名称”].document;
      window.document.getElementById(“iframeId”).contentWindow.document;
      window.document.getElementById(“iframeId”).contentDocument;
      通过这四种方式获取子窗体的document,document对象获取之后就可以操作iframe框架中的元素了。一般通过document的方法操作元素。如果想要调用父窗体的函数或者是操作父窗体的标签元素,直接使用:parent.window.document获取父窗体的document对象,使用parent.window.函数名,直接调用父窗体的函数。如果iframe有多层嵌套,那么一层一层去取,方法都相似。
      二、    document对象
      简单的说document对象就是window对象的属性对象。其实就是一个html文档结构。
      那么document有啥用呢?document对象可以操作html文档中的任意一个节点,可以添加修改删除查找一个节点,可以获取某个标签的值,某个标签的属性节点的值。
      常用方法:
      document.getElementById(“标签元素id属性”) 返回单个元素
      document.getElementsByName(“标签元素的name属性”)返回数组对象
      document.getElemetsByTagName(“标签名”)返回数组对象
    4. <a>标签的target指向iframe
      1. <iframe id="myFrameId" name="myFrameName" scrolling="no" frameborder="0" style="200px; height:150px; "></iframe>
      2. <a href="xx.html" target="myFrameName" >打印二维码</a>
  • 相关阅读:
    Docker部署Tomcat
    Docker部署MySQL
    kettle 共享数据库连接(解决每次都需要创建数据库连接问题)
    Kettle8.2的安装与使用
    Kettle 使用JS脚本 增加UUID输出列
    kettle使用(mysql导入MongoDB)
    Eclipse从Git上下载代码
    Eclipse中使用git
    在windows下安装git中文版客户端并连接gitlab
    eclipse中git的安装、配置和使用
  • 原文地址:https://www.cnblogs.com/jiangtao1218/p/9671646.html
Copyright © 2011-2022 走看看