BOM之frame框架

先来说一下BOM,什么是BOM?BOM就是浏览器对象模型,大家都知道,ECMAScript是JavaScript的核心,但如果要在WEB中使用JavaScript,那么BOM则无疑才是真正的核心,BOM,提供很多对象,用于访问浏览器功能,这些功能与任何页面内容无关,多年来,缺少事实上的规范导致BOM既有意思又有问题,因为浏览器提供商会按照各自的想法去拓展它,于是,浏览器之间共有的对象就成为了事实上的标准。

BOM的核心对象是window,它表示浏览器的一个实例。在浏览器中,window对象有双重角色,它既是通过JavaScript访问浏览器的一个接口,又是ECMAScript规定的Global对象,这意味着在网页中定义的任何一个对象、变量和函数,都以window作为其Global对象,因此有权访问parseInt()等方法。

不过,定义全局变量与在window对象上直接定义属性还是有一点差别的:全局变量不能通过delete操作符删除,而直接在window对象上定义的属性可以。

BOM的作用:控制窗口、框架、和弹出窗口,利用location对象中的页面信息、使用navigator对象了解浏览器、screen对象以及history对象等。

今天主要来介绍一下Frame框架,

如果页面中包含框架,则每个框架,都拥有自己的window对象,并且保存在frames集合中,。在frames集合中,可以通过数值索引(从0开始,从左至右,从上到下)或者框架名称来访问相应的window对象,每个window对象都有一个name属性,其中包含框架的名称。

来个例子

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>练习</title>

</head>
<frameset rows="160,*">
    <frame src="frame.htm" name="topFrame">
    <frameset cols="50%,50%">
        <frame src="anotherframe.htm" name="leftframe">
        <frame src="yetanotherframe.htm" name="rightframe">
    </frameset>
</frameset>

</html>

上面代码表示,把窗口分3个框架,上面高160px,剩下的都是下面的框架,(rows=160,*)

下面的框架又分两个框架,左右各占50%,(cols="50%,50%"),

另外,每个frame框架,可以再次细分,在这就不再细分了,

下面来说一下,怎么取到每一个框架,(要在最外层的框架里写js代码哟,当然在里层框架内也可以写js代码,不过今天的代码都是在最外层框架写的)。

按上、左、右的顺序依次取:

上:window.frames[0]、window.frames["topFrame"]、top.frames.[0]、top.frames["topFrame"]、frames[0]、frames["topFrame"]。

下左:window.frames[1]、window.frames["leftframe"]、top.frames.[1]、top.frames["leftframe"]、frames[1]、frames["leftframe"]。

下左:window.frames[2]、window.frames["rightframe"]、top.frames.[2]、top.frames["rightframe"]、frames[2]、frames["rightframe"]。

注释:top对象始终指向最高(最外)层的框架,也就是浏览器窗口。使用它可以确保在一个框架中正确的访问另一个框架。因为对于在一个框架中编写的任何代码来说,其中的window对象指向的都是那个框架的特定实例,而非最高层的框架。

与top相对的另一个window对象是patent。顾名思义,parent(父)对象始终指向当前框架的直接上层框架,在某些情况下,parent有可能等于top;但在没有框架的情况下,parent一定等于top。

注意:每个框架中的window对象都是独立的,都有自己的构造函数。

原文地址:https://www.cnblogs.com/fqh123/p/10398568.html

时间: 2024-12-24 21:29:33

BOM之frame框架的相关文章

Python-爬虫-针对有frame框架的页面

有的页面会使用frame 框架,使用Selenium + PhantomJS 后并不会加载iframe 框架中的网页内容.iframe 框架相当于在页面中又加载了一个页面,需要使用Selenium 的 switch_to.frame() 方法加载(官网给的方法是switch_to_frame(),但是IDE提醒使用前面的方法替代该方法). 比如: driver.switch_to.frame('g_iframe') html = driver.page_source 然后结合BeautifulS

&lt;frame&gt;框架要点

frame在页面布局时作用很大,基本作用和母板页类似. <html> <head> </head> <frameset cols="25%,50%,25%"> <frame src="frame_a.aspx" id="top" name=""/> <frame src="frame_b.aspx" id="medi" n

frame框架中验证码图片抓取(VB2010)

今日写一个验证码识别自动登录的程序,发现网页中验证码图片是嵌在frame框架中,一时间遇到了问题无法搞定,网上搜了很多网页也没有具体的解决办法,今日偶然尝试居然搞定了,给大家分享一下. HTML的源程序模拟如下: <body> <iframe src="hello.jpg"></iframe> </body> 真实的场景SRC是一个类似于checkcode.ASP的链接,不能直接通过WEB地址抓取,不然图片就会变了,这个估计大家都知道,抓

Frame 框架的创建

Qt 创建Frame框架的例子: QFrame * frm = new QFrame(this); //创建一个框架 frm->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken);//框架显示外形. //StylePanel画一个矩形面板,根据当前GUI风格的不同而不同,可被凸起或凹陷 //Sunken画一个3D的凹陷显示效果 frm->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Exp

Frame框架

框架 frameset    框架集    如果使用框架集,当前页面不能有body    cols="300,*" :左右拆分,左边宽300,右边宽剩余    rows="300,*" :上下拆,上边高300,下边高剩余    frameboder :边框    <frame>        src :框架要显示页面的地址  noresize:禁止窗口调整大小         scrolling:滚动条  scrolling="no"

frame框架及其实例

框架概念 : 谓框架便是网页画面分成几个框窗,同时取得多个 URL.只需要 <FRAMESET> <FRAME> 即可,面所有框架标记需要放在一个总起的 html 档,这个档案只记录了该框架如何分割 ,不会显示任何资料,所以不必放入 <BODY> 标记,浏览这框架必须读取这档案面不是其他框窗的档案.<FRAMESET> 是用来划分框窗,每一窗框由一个 <FRAME> 标记所标示,<FRAME>必须在 <FRAMESET>

html使用frame框架导航跳转至指定的节的用法

主要内容:左侧的导航框架包含了一个链接列表,这些链接将第二个框架作为目标.第二个框架显示被链接的文档.导航框架其中的链接指向目标文件中指定的节. 创建3个html,分别为 index.html ,content.html,link.html. index.html的代码如下: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8" /> 5 <title>使用框架

switch_to_frame,切换frame框架

页面包含frame/iframe标签,需要先切换到该frame标签,再去定位属于这个frame的元素. 如果要再去定位其他frame的元素,需要回到该frame的上级,定位到要选择的frame,不过为了保险起见,可以回到整个页面的主frame,然后再去选择其他frame. .switch_to_frame("XXX") XXX为frame的id或name或通过find_element_by_xxx找到的frame元素 .switch_to_default_content() 回到当前页

navigate frame框架

string uriText = String.Format("/Product.xaml?productID={0}&type={1}", productID, productType); mainFrame.Navigate(new Uri(uriText), UriKind.Relative); int productID, type; if (this.NavigationContext.QueryString.ContainsKey("productID&q