contentwindow属性(windows7手机版)
大家好,关于contentwindow属性很多朋友都还不太明白,今天小编就来为大家分享关于windows7手机版的知识,希望对各位有所帮助!
document.getElementById().contentWindow是什么意思啊
document.getElementByid("AAA"),查找页面中id=“AAA”的选项。
在页面中frameset将页面分为多个窗口
<iframe id="AAA" src="xxxA.html"/>
<iframe id="BBB" src="xxxB.html"/>
比如上面两句话,就是说将这个页面分为两个页面,上部分id为AAA的页面,这个页面显示的内容为xxxA.html。下边部分同理为xxxB.html页面内容。document.getElementByid("AAA"),就是查找到页面id为AAA的页面,然后进行改变,id为BBB的部分是不变的。
contentWindow属性是指指定的frame或者iframe所在的window对象,在IE中iframe或者frame的contentWindow属性可以省略,但在Firefox中如果要对iframe对象进行编辑则必须指定contentWindow属性。contentWindow下有很多方法对应不同的打开样式,这下方法是不可以省略的,比如contentWindow.navigate(url)参数列表除了有url外还可以有其他的,但url是必须有的,这个url在同一位置代替xxxA,html。
和document.getElementById()最常常一起用的就是parent。比如在这个页面AAA,你想从id
为"AAA"跳转到"BBB"去"BBB"进行操作,id="AAA"页面上写parent.document.getElementByid("BBB").navigate("xxxC.html")。这样做后你就将xxxC.html代替了xxxB.html。id=“AAA”是不变的,你到了id为BBB页面进行操作,以后的所有请求操作都在id="BBB"上进行
父窗口Parent和窗口拥有者Owner的区别
概念和区别
在windows系统中,每个窗口对象都对应有一个数据结构,形成一个list链表。系统的窗口管理器通过这个list来获取窗口信息和管理每个窗口。这个数据结构中有四个数据用来构建list,即child、sibling、parent、owner四个域。
所以我们可以看到,窗口之间的关系有两种:owner-owned关系和 parent-child关系。前者称之为拥有/被拥有关系,后者称之为父/子关系。在这篇文字中,我把owner窗口称之所有者窗口。换句话说,一个窗口在有一个父窗口(parent)的同时,还可能被不同的窗口拥有(owner),也可以有自己的子窗口(child)。在MFC的CWnd类中,所有者窗口保存在m_hWndOwner成员变量中,父窗口则保存在m_hParent中,但是这两个值并不一定和窗口对象数据结构中的值相对应。
窗口之间的关系,决定了窗口的外在表现。比如显示、销毁等。
如果一个窗口数据的owner域非NULL,则它和该窗口建立了owner-owned关系,拥有关系决定了:
(1)被拥有的窗口永远显示在拥有它的那个窗口的前面;
(2)当所有者窗口最小化的时候,它所拥有的窗口都会被隐藏;
(3)当所有者窗口被销毁的时候,它所拥有的窗口都会被销毁。
需要注意的是,隐藏所有者窗口并不会影响它所拥有的窗口的可见状态。比如:如果窗口 A拥有窗口B,窗口B拥有窗口C,则当窗口A最小化的时候,窗口B被隐藏,但是窗口 C还是可见。
如果一个窗口的parent域非NULL,则它和该窗口之间就建立了parent-child关系。父子决定了:
(1)窗口在屏幕上面的显示位置。父窗口提供了用来定位子窗口的坐标系统,一个子窗口只能显示在它的父窗口的客户区中,之外的部分将被裁减。这个裁减法则决定了如果父窗口不可见,则子窗口肯定不可见。如果父窗口移动到了屏幕之外,子窗口也一样。
(2)当父窗口被隐藏时,它的所有子窗口也被隐藏。
(3)父窗口被销毁的时候,它所拥有的子窗口都会被销毁。
注意!最小化父窗口不会影响子窗口的可见状态,子窗口会随着父窗口被最小化,但是它的WS_VISIBLE属性不会变。
Windows系统为什么要使用两种关系呢?这是为了更加灵活的管理窗口。举个例子:组合框(combobox)的下拉列表框(list box)可以超出组合框的父窗口的客户区,这样有利于显示,因此系统创建该list box的时候,是作为控制台窗口(desktop window)的子窗口,它的父窗口hWndParent是NULL,这样,list box的显示区域是限制在整个屏幕内,但是该list box的所有者却是组合框的第一个非子窗口祖先(比如对话框),当它的所有者窗口销毁后,该 list box自动销毁。
另外,窗口之间消息的传递也和窗口关系有关,通常,一个窗口会把自己的通知消息发送给它的父窗口,但不全是这样,比如,CToolBar发送通知消息给它的所有者窗口而不是父窗口。这样以来,就可以允许工具条作为一个窗口(比如一个 OLE容器程序窗口)的子窗口的同时,能够给另一个窗口(比如in-place框架窗口)发送消息。至于某类窗口到底是把消息发送给谁,是父窗口还是所有者窗口,microsoft并没有明示。还有,在现场(in-place)编辑的情况下,当一个 server窗口激活或者失效的时候,框架窗口所拥有的子窗口自动隐藏或者显示,这也是通过直接调用SetOwner函数实现的。
window.close()无效如何解决
在JavaScript中,关闭当前页面的语法通常为window.close()。然而,在某些浏览器环境下,例如谷歌浏览器与火狐浏览器中,此方法可能无法正常使用。原因在于,window.close()方法仅适用于由window.open()或浏览器地址栏直接输入URL所打开的页面。对于其他情况,出于安全考虑,该方法被禁止使用。
为解决window.close()无效的问题,可以尝试以下两种方法:针对不同场景进行应用。
解决方法1针对的是iframe场景。当页面嵌套在iframe中时,直接使用window.close()可能无法关闭当前页面。此时,可以通过触发iframe的卸载事件,间接关闭页面。具体操作如下:
javascript
const iframe= document.querySelector('iframe');
if(iframe.contentWindow){
iframe.contentWindow.close();
} else{
iframe.onerror=()=>{
iframe.remove();
};
}
此代码首先查找页面中所有的iframe元素,然后尝试获取其contentWindow对象。若获取成功,则调用close()方法关闭iframe页面;若获取失败,则触发错误事件,通过移除iframe元素的方式达到关闭页面的目的。
解决方法2适用于非iframe场景,通常涉及页面跳转。当window.close()方法无法正常使用时,可以通过引导用户进行页面跳转来替代关闭当前页面。具体实现方式为,添加一个引导性链接或者按钮,当用户点击该链接或按钮时,页面跳转到其他URL。示例代码如下:
javascript
const closeButton= document.createElement('button');
closeButton.textContent='关闭当前页面';
closeButton.addEventListener('click',()=>{
window.location.href='指定页面URL';
});
document.body.appendChild(closeButton);
此代码首先创建一个按钮元素,并设置其文本内容为“关闭当前页面”。接着,为按钮添加一个点击事件监听器,当用户点击按钮时,通过window.location.href属性将页面跳转至指定的URL。最后,将按钮元素添加到页面的body中,以确保其可见并可供用户操作。
通过上述方法,针对不同场景及需求,可以有效解决window.close()无效的问题,为用户提供更灵活的页面控制选项。
关于contentwindow属性,windows7手机版的介绍到此结束,希望对大家有所帮助。