热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JS如何获取并操作iframe中的元素?

一、需求与遇到的问题在网站的后台管理中使用了iframe框架布局,包括顶部菜单、左侧导航和主页面。需求是:点击主页面上的一个按钮,在顶部菜单栏的右侧显示“退出”链接,点击可退出

一、需求与遇到的问题

  在网站的后台管理中使用了iframe框架布局,包括顶部菜单、左侧导航和主页面。需求是:点击主页面上的一个按钮,在顶部菜单栏的右侧显示“退出”链接,点击可退出系统。

  我的思路是:在顶部的菜单页面放一个不可见的“退出”链接,当用户点击位于iframe中的主页面(mainpage.htm)中的按钮时,在顶部菜单页面的右侧显示“退出”。

  我现在遇到的问题是:如何在页面的一个iframe子页面(mainpage.htm)中获取并且操作其它iframe子页面(比如toppage.htm)中的html元素?

二、通过js获取并操作iframe中的元素来解决问题

  这里主要就是通过js来操作window对象。window 对象表示浏览器中打开的窗口,如果文档包含框架(frame 或 iframe 标签),浏览器会为 html 文档创建一个 window 对象,并为每个框架创建一个额外的 window 对象。

  经过我在网上查资料,找到了js操作iframe中html元素的方法。示例如下。

1 function showexit() {
2 //获取iframe的window对象
3 var topwin = window.top.document.getelementbyid("topnav").contentwindow;
4 //通过获取到的window对象操作html元素,这和普通页面一样
5 topwin.document.getelementbyid("exit").style.visibility = "visible";
6 }

  说明:第一步,通过window.top.document.getelementbyid("topnav")方法获取了顶部菜单页面(toppage.htm)所在的iframe对象;第二步,通过上一步获取到的iframe对象的contentwindow属性得到了iframe中元素所在的window对象;第三步,通过上一步获取到的window对象来操作iframe框架中的元素,这和操作不在iframe框架中的普通html元素是一样的。

  下面是我在重现以及解决这个问题时写的全部代码(布局太丑,但重点是js方法):

  1.使用iframe框架布局的顶级页面(js操作iframe中的元素.htm)

1
2
3
4
5
63
64
65


66
67

68

69

70
71

72

73
74

75

76

77
78

79
80

  2.顶部菜单栏页面(toppage.htm)

1
2
3
4
5
41
42
43


    44
  • 文章管理

  • 45
  • 会员管理

  • 46
  • 系统管理

  • 47
  • 退出

  • 48

49
50

  3.左侧导航栏(leftpage.htm)

1
2
3
4
5
28
29
30


31

    32
  • 栏目一

  • 33
  • 栏目二

  • 34
  • 栏目三

  • 35

36

37
38

  4.需要访问顶部菜单页面元素的主页面(mainpage.htm)

1
2
3
4
5
11
19
20
21


22
23

24
25

  5.底部页面(bottompage.htm)

1
2
3
4
5
6
7


8 底部版权区:这是一个底部的测试页面
9

10
11

  参考资料:http://wenku.baidu.com/view/76d53a7b168884868762d6cb.html

         http://www.w3school.com.cn/htmldom/dom_obj_window.asp

 



推荐阅读
  • python+selenium十:基于原生selenium的二次封装fromseleniumimportwebdriverfromselenium.webdriv ... [详细]
  • HTML制作简单首页导航
    h1大标题:李广程的作业列表查看演示地址一:http:js.lgcweb.cn查看演示备用地址:http:39.105.0.128Ja ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 如何在HTML中获取鼠标的当前位置
    本文介绍了在HTML中获取鼠标当前位置的三种方法,分别是相对于屏幕的位置、相对于窗口的位置以及考虑了页面滚动因素的位置。通过这些方法可以准确获取鼠标的坐标信息。 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
  • 本文总结了在编写JS代码时,不同浏览器间的兼容性差异,并提供了相应的解决方法。其中包括阻止默认事件的代码示例和猎取兄弟节点的函数。这些方法可以帮助开发者在不同浏览器上实现一致的功能。 ... [详细]
  • 第8章 使用外部和内部链接
    8.1使用web地址LearnAboutafricanelephants. ... [详细]
  • java.lang.Class.getDeclaredMethod()方法java.lang.Class.getDeclaredMethod()方法用法实例教程-方法返回一个Met ... [详细]
  • 面试中2次被问到过这个知识点,实际开发中,应用事件委托也比较常见。JS中事件委托的实现主要依赖于事件冒泡。那什么是事件冒泡?就是事件从最深 ... [详细]
  • 在分页时,我想让点过的页码变色.应该怎么做?比如:12345我点2跳到第2页然后2变成红色其他为蓝色 ... [详细]
  • ajaxfileupload.js 兼容ie9,10
    在使用ajaxfileupload.js上传文件时,ie9和ie10会报INVALID_CHARACTER_ERR(5)的错误,导致无法上传成功;网上查了一系列处理方式:如:把代码 ... [详细]
  • 使用HTML创建弹出框以便用户输入信息
    在做项目的过程中,我们时常需要进行一些弹框操作,比如在后台管理时需要进行的一些增删改操作,这个时候我们需要使用到弹框,或者在 ... [详细]
  • Tooltips效果,鼠标经过显示提示 ... [详细]
  • Html5第一章
    Html5第一章 ... [详细]
author-avatar
萝莉控的小潴_515
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有