`
glacier3
  • 浏览: 384834 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

iframe交互使用大全

阅读更多
被嵌套的网页中可以使用parent.【函数名】来访问父级别的js,父级别的网页可以使用window.framename.【函数名】来访问子页面的js

function modifyWH(){
    var ifr = document.getElementById("ifcontent");
    if (ifr.contentDocument && ifr.contentDocument.body.offsetHeight) {
       //在FireFox下获得子Frame窗口宽高的方法
        //ifr.width = ifr.contentDocument.body.offsetWidth;
        ifr.height = ifr.contentDocument.body.offsetHeight;
        //alert(ifr.contentDocument.body.offsetHeight);
    }else{
       //在IE下获得子Frame窗口宽高的方法
        //ifr.width = ifr.Document.body.scrollWidth;
        ifr.height = ifr.Document.body.scrollHeight;
        //alert(ifr.Document.body.scrollHeight);
    }
}


IFrame可以在网页内嵌入另一个页面,类似“画中画”形式。

  标记的使用格式是:

  <Iframe src="URL" width="x" height="x" scrolling="[OPTION]" frameborder="x"></iframe>
  src:文件的路径,既可是HTML文件,也可以是文本、ASP等;
  width、height:"画中画"区域的宽与高;
  scrolling:当SRC的指定的HTML文件在指定的区域不显不完时,滚动选项,如果设置为NO,则不出现滚动条;如为Auto:则自动出现滚动条;如为Yes,则显示;
  FrameBorder:区域边框的宽度,为了让“画中画“与邻近的内容相融合,常设置为0。

  比如:

  <Iframe src=".com/xyz"; width="250" height="200" scrolling="no" frameborder="0"></iframe>
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

  窗口与浮动帧之间的相互控制

  在脚本语言与对象层次中,包含Iframe的窗口我们称之为父窗体,而浮动帧则称为子窗体,弄清这两者的关系很重要,因为要在父窗体中访问子窗体或相反都必须清楚对象层次,才能通过程序来访问并控制窗体。

  1、在父窗体中访问并控制子窗体中的对象

  在父窗体中,Iframe即子窗体是document对象的一个子对象,可以直接在脚本中访问子窗体中的对象。

  现在就有一个问题,即,我们怎样来控制这个Iframe,这里需要讲一下Iframe对象。当我们给这个标记设置了ID 属性后,就可通过文档对象模型DOM对Iframe所含的HTML进行一系列控制。

  比如在example.htm里嵌入test.htm文件,并控制test.htm里一些标记对象:
  <Iframe src="test.htm" id="test" width="250" height="200" scrolling="no" frameborder="0"></iframe>
test.htm文件代码为:
  <html>
   <body>
    <h1 id="myH1">hello,my boy</h1>
   </body>
  </html>
  如我们要改变ID号为myH1的H1标记里的文字为hello,my dear,则可用:
  document.myH1.innerText="hello,my dear"(其中,document可省)
  在example.htm文件中,Iframe标记对象所指的子窗体与一般的DHTML对象模型一致,对对象访问控制方式一样,就不再赘述。

  2、在子窗体中访问并控制父窗体中对象

  在子窗体中我们可以通过其parent即父(双亲)对象来访问父窗口中的对象。
  如example.htm:
  <html>
   <body onclick="alert(tt.myH1.innerHTML)">
    <Iframe name="tt" src="frame1.htm" width="250" height="200" scrolling="no" frameborder="0"></iframe>
    <h1 id="myH2">hello,my wife</h1>
   </body>
  </html>
  如果要在frame1.htm中访问ID号为myH2中的标题文字并将之改为"hello,my friend",我们就可以这样写:
  parent.myH2.innerText="hello,my friend"
  这里parent对象就代表当前窗体(example.htm所在窗体),要在子窗体中访问父窗体中的对象,无一例外都通过parent对象来进行。

  Iframe虽然内嵌在另一个HTML文件中,但它保持相对的独立,是一个“独立王国“哟,在单一HTML中的特性同样适用于浮动帧中。

  试想一下,通过Iframe标记,我们可将那些不变的内容以Iframe来表示,这样,不必重复写相同的内容,这有点象程序设计中的过程或函数,减省了多少繁琐的手工劳动!另外,至关重要的是,它使页面的修改更为可行,因为,不必因为版式的调整而修改每个页面,你只需修改一个父窗体的版式即可了。

  要注意的是,Nestscape6.0之前版本不支持Iframe标记。

  例子:

1:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
<iframe src="页面" width="宽度"  height="高度" align="排列可以是left或right,center" scrolling="是否有滚动条可以填no或yes"></iframe>

<IFRAME frameBorder=0 frameSpacing=0 height=25 marginHeight=0 marginWidth=0 scrolling=no name=main src="bgm/bgm.html" width=300></IFRAME>


2:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
用了iframe后 发现滚动条不漂亮 想用2个图片来代替↑↓

应该怎么实现呢?
回答:
用下列代码替换网页的<title>..</title>
<SCRIPT LANGUAGE="javascript">
function scroll(n)
{temp=n;
Out1.scrollTop=Out1.scrollTop+temp;
if (temp==0) return;
setTimeout("scroll(temp)",80);
}
</SCRIPT>
<TABLE WIDTH="330">
<TR>
<TD WIDTH="304" VALIGN="TOP" ROWSPAN="2" >
<DIV ID=Out1 STYLE="width:100%; height:100;overflow: hidden ;border-style:dashed;border-width: 1px,1px,1px,1px;">
文字<BR> 文字<BR>
文字<BR>
文字<BR>
文字
<BR>
<BR>
</DIV>
</TD>
<TD WIDTH="14" VALIGN="TOP"><IMG SRC="photo/up0605.gif" WIDTH="14" HEIGHT="20" onmouseover="scroll(-1)" onmouseout="scroll(0)" onmousedown="scroll(-3)" BORDER="0" ALT="按下鼠标速度会更快!"></TD>
</TR>
<TR>
<TD WIDTH="14" VALIGN="BOTTOM"><IMG SRC="photo/down0605.gif" onmouseover="scroll(1)" onmouseout="scroll(0)"  onmousedown="scroll(3)" BORDER="0" WIDTH="15" HEIGHT="21" ALT="按下鼠标速度会更快!"></TD>
</TR>
</TABLE>

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
下面这段代码可以实现IFrame自适应高度,即随着页面的长度,自动适应以免除页面和IFrame同时出现滚动条。

源代码如下

<script type="text/javascript">
//** iframe自动适应页面 **//

//输入你希望根据页面高度自动调整高度的iframe的名称的列表
//用逗号把每个iframe的ID分隔. 例如: ["myframe1", "myframe2"],可以只有一个窗体,则不用逗号。

//定义iframe的ID
var iframeids=["test"]

//如果用户的浏览器不支持iframe是否将iframe隐藏 yes 表示隐藏,no表示不隐藏
var iframehide="yes"

function dyniframesize()
{
var dyniframe=new Array()
for (i=0; i<iframeids.length; i++)
{
if (document.getElementById)
{
//自动调整iframe高度
dyniframe[dyniframe.length] = document.getElementById(iframeids);
if (dyniframe && !window.opera)
{
dyniframe.style.display="block"
if (dyniframe.contentDocument && dyniframe.contentDocument.body.offsetHeight) //如果用户的浏览器是NetScape
dyniframe.height = dyniframe.contentDocument.body.offsetHeight;
else if (dyniframe.Document && dyniframe.Document.body.scrollHeight) //如果用户的浏览器是IE
dyniframe.height = dyniframe.Document.body.scrollHeight;
}
}
//根据设定的参数来处理不支持iframe的浏览器的显示问题
if ((document.all || document.getElementById) && iframehide=="no")
{
var tempobj=document.all? document.all[iframeids] : document.getElementById(iframeids)
tempobj.style.display="block"
}
}
}

if (window.addEventListener)
window.addEventListener("load", dyniframesize, false)
else if (window.attachEvent)
window.attachEvent("onload", dyniframesize)
else
window.onload=dyniframesize
</script>
分享到:
评论
1 楼 Surmounting 2012-06-20  
现在火狐好像把 iframe 的 contentDocument 也取消了……
于是不知道怎么在 JavaScript 中调用某一个 iframe 里边的 JavaScript 了。

相关推荐

    Iframe交互语法

    ### Iframe交互语法详解 #### 一、Iframe基本语法及属性 Iframe(Inline Frame)是一种HTML标签,用于在当前网页中嵌入另一个网页或文档。它支持一系列的属性来控制显示效果。 ##### 1. 基本语法: ```html ...

    unigui_网页iframe交互_完善_03

    在这个“unigui_网页iframe交互_完善_03”的主题中,我们将深入探讨Unigui如何与网页中的IFrame元素进行交互,并实现功能的完善。 首先,IFrame(Inline Frame)是HTML中的一个元素,用于在网页中嵌入另一个文档,...

    unigui_网页iframe交互_完善

    通过以上所述,我们可以看到在Unigui框架下实现网页iframe交互的完整流程,包括了iframe的基本使用、通信机制、跨域处理以及性能优化等方面。理解并熟练掌握这些知识点,将有助于开发出功能丰富且用户友好的Web应用...

    unigui_网页iframe交互

    在Unigui应用中,可以通过JavaScript代码与IFrame交互,例如: ```javascript var iframe = document.getElementById('myIframe'); iframe.onload = function() { // 在IFrame加载完成后执行的代码 }; iframe...

    FLEX与JS数据交互,以及Google插件IFrame的使用

    在IT行业中,FLEX与JavaScript的数据交互以及Google插件IFrame的使用是Web开发中的重要技术环节。FLEX是一款基于Adobe Flash Player的富互联网应用程序(RIA)开发框架,而JavaScript则是网页开发的标准脚本语言。当...

    iframe框架使用(完美版)

    总的来说,理解和掌握iframe的使用,以及如何实现自适应高度,对于提升网页交互体验至关重要。同时,封装JavaScript函数是提高代码复用性和维护性的良好实践,尤其是在大型项目中。通过深入学习和实践,我们可以更好...

    unigui_网页iframe交互_完善_02

    综上所述,理解并掌握Unigui框架下的IFrame交互技术,不仅涉及HTML和JavaScript的基本知识,还需要对跨域通信、事件处理、数据交换以及性能优化有深入的理解。通过熟练运用这些知识点,开发者可以构建出功能强大且...

    Javascript iframe交互并兼容各种扫瞄器的解决方法_.docx

    然而,在使用`iframe`进行内外交互时,不同的浏览器对于获取`iframe`内部`window`对象的方法存在差异。例如,某些浏览器可能使用`window`,而有些则使用`contentWindow`等。本文将详细介绍一种通用的方法,以确保`...

    iframe 的使用

    2. **内容隔离**:使用 Iframe 可以将一些不希望直接与主页面交互的内容隔离开来,比如第三方提供的内容。 3. **安全隔离**:对于不信任的第三方内容,可以使用 Iframe 来加载,以减少对主页面的安全威胁。 4. **多...

    vue与iframe之间的信息交互的实现

    在某些应用场景中,比如集成第三方服务或者在单页应用中嵌入其他网页,我们可能需要在 Vue 应用与 iframe(内联框架)之间进行信息交互。本文将深入探讨如何在 Vue 项目中实现这种交互。 首先,`iframe` 是一种 ...

    flex中使用iframe

    本文将详细讲解如何在Flex中使用`iframe`。 1. **iframe介绍** `iframe`,全称"Inline Frame",是一种HTML元素,允许在单个HTML文档中嵌入另一个HTML文档。在Flex中,我们不能直接使用HTML的`iframe`标签,但可以...

    Flex项目Google IFrame使用

    尽管Flex主要处理矢量图形和交互性,但通过使用HTMLComponent类,我们可以集成HTML内容,包括IFrame。HTMLComponent允许我们在Flex应用中嵌入HTML元素,并通过ActionScript与它们进行交互。 当遇到IFrame消失的问题...

    lhgdialog文件加跨iframe框架使用

    在这个主题中,“lhgdialog文件加跨iframe框架使用”意味着我们将探讨如何在含有iframe的页面结构中利用lhgDialog进行交互。 首先,我们来看一下lhgDialog的基本用法。lhgDialog提供了丰富的选项和方法,可以定制...

    Default(iframe).rar(iframe的简单使用)

    `iframe`常被用来实现页面的动态加载、内容的分隔以及不同页面间的交互,尤其是在复杂的Web应用中,它扮演着重要的角色。`Default(iframe).rar`这个压缩包文件提供了关于`.NET`环境下`iframe`简单使用的实例。 1. *...

    iframe对另一个iframe控制的Demo

    本实例“iframe对另一个iframe控制的Demo”展示了如何通过JavaScript或者jQuery实现一个iframe对另一个iframe的交互,以及如何控制iframe的显示与隐藏。这种技术广泛应用于构建复杂的Web应用程序,如页面内的多窗口...

    可以左右拖动的iframe框架

    在IT行业中,网页开发是一项重要的任务,而框架和iframe的使用是其中不可或缺的部分。"可以左右拖动的iframe框架"是一种创新的实现方式,它允许用户通过鼠标在水平方向上移动iframe,从而提供了更灵活的网页布局和...

    关于iframe跨域POST提交的方法示例

    所以自己对跨域有一定的概念性了解,知道什么是跨域以及解决跨域的方法,但是具体实际从来没有操作过,直到最近在公司项目中,遇到了一个需要使iframe跨域进行POST提交的实际案例,我才明白具体如何使用iframe进行...

    解决双iframe互相刷新进入死循环的问题

    然而,在处理多个iframe交互时,可能会遇到一个棘手的问题——双iframe互相刷新进入死循环。这个问题通常发生在两个或多个iframe之间尝试通过JavaScript互相重载对方,导致无限循环,严重影响用户体验并可能导致...

    js调用-嵌入iframe

    综上所述,"js调用-嵌入iframe"涉及到的主要知识点包括IFrame的基本使用、JavaScript与IFrame的交互以及测试中的注意事项。理解并掌握这些内容,对于网页开发尤其是动态内容加载和页面组件的复用具有重要意义。

Global site tag (gtag.js) - Google Analytics