摘要:作為對(duì)象屬性的文檔元素如果文檔中用屬性為元素命名。其就是交互窗口中的每個(gè)窗口窗體都是的執(zhí)行上下文。以對(duì)象作為全局對(duì)象,這樣的話,一個(gè)窗口窗體中的代碼可以應(yīng)用到其他窗口或者窗體并且同源策略沒(méi)有進(jìn)行阻止。
作為window對(duì)象屬性的文檔元素
如果html文檔中用id屬性為元素命名。并且如果 window對(duì)象沒(méi)有此名字的屬性,則window對(duì)象會(huì)賦予一個(gè)屬性,其名字為id屬性的值,其值指向該元素
html
控制臺(tái)
window.ming;
由于window對(duì)象是作用域鏈的最頂層,即id屬性為腳本訪問(wèn)的全局變量。如上方的,可以通過(guò)變量ming來(lái)達(dá)到引用此元素的目的。其中button為一個(gè)按鈕
但是如果window對(duì)象已經(jīng)具有此名字的屬性。不會(huì)發(fā)生上述情況,因?yàn)镮D已經(jīng)被占用。
如果在代碼中聲明并賦值給全局變量x,那么顯示聲明會(huì)隱藏隱式聲明的元素變量。如果腳本中的變量聲明出現(xiàn)在命名元素之前,那么變量的存在會(huì)阻止元素獲取它的window屬性。如果腳本中的變量聲明出現(xiàn)在命名元素之后,那么變量的顯式會(huì)覆蓋屬性的隱式值。即,顯示的是顯式的聲明。
舉一個(gè)查找元素id的例子
var ui = ["input", "prompt", "heading"]; ui.forEach((id) => { // 進(jìn)行一次循環(huán) ui[id] = document.getElementById(id); console.log(ui[id]); });
html
1111111
好吧,因?yàn)闉g覽器廠商可以隨便給加屬性,導(dǎo)致很容易出現(xiàn)顯式和隱式的問(wèn)題。所以呢,一般不用,并且輸出的結(jié)果,全是null,沒(méi)有該id。
為什么呢。因?yàn)閟cript腳本在頭部先進(jìn)行加載,無(wú)法獲得完整的dom樹(shù),導(dǎo)致dom樹(shù)獲取全為空值,因?yàn)樵谔幚韏s腳本的時(shí)候,dom樹(shù)渲染是阻塞的,除非允許異步渲染,加載完成以后進(jìn)行渲染,或者是異步的隨機(jī)渲染。
window.prompt
因?yàn)閣indow對(duì)象存在該屬性,導(dǎo)致會(huì)出現(xiàn)遍歷的失敗
Σ( ° △ °|||)︴
給一個(gè)id進(jìn)行查找
var $ = (id) => { return document.getElementById(id); }; var ui = {}; ui.prompt = $("prompt"); console.log(ui);多窗口和窗體
一個(gè)web瀏覽器有多個(gè)標(biāo)簽,每一個(gè)標(biāo)簽頁(yè)都是一個(gè)獨(dú)立的瀏覽上下文(即,每一個(gè)獨(dú)立的標(biāo)簽都是一個(gè)線程,有些時(shí)候,瀏覽器會(huì)進(jìn)行線程的合并)。每一個(gè)標(biāo)簽頁(yè)都有一個(gè)獨(dú)立的window對(duì)象。而且相互之間不干擾。每個(gè)標(biāo)簽頁(yè)中運(yùn)行的腳本通常并不知道其他便簽頁(yè)的存在。更不會(huì)和其他標(biāo)簽頁(yè)的window對(duì)象進(jìn)行交互操作或者操作其文檔內(nèi)容。
窗口和其他窗口并不是沒(méi)有完全的關(guān)系。一個(gè)窗口或標(biāo)簽頁(yè)中的腳本可以打開(kāi)新的窗口或者標(biāo)簽頁(yè)。當(dāng)一個(gè)腳本這樣做,多個(gè)窗口可以相互操作
已經(jīng)處于半廢棄的inframe標(biāo)簽。挺無(wú)奈的,已經(jīng)快廢了。
不過(guò)學(xué)習(xí)還是學(xué)習(xí)一下吧
iframe是用來(lái)嵌套多個(gè)文檔的。由iframe所創(chuàng)建的嵌套瀏覽上下文是用自己的window對(duì)象表示的。每一個(gè)iframe都是一個(gè)獨(dú)立的window對(duì)象。
對(duì)于客戶端js來(lái)說(shuō),窗口,標(biāo)簽頁(yè),iframe和框架都是瀏覽上下文。對(duì)于js來(lái)說(shuō)都是window對(duì)象。和獨(dú)立的不同之處在于,js腳本能夠看到其祖先和子孫
使用window的open可以打開(kāi)一個(gè)新的標(biāo)簽頁(yè)
window.open將會(huì)載入指定的url到新的或者已經(jīng)存在的窗口中(取決于如何設(shè)置)。并返回代表那個(gè)窗口的window對(duì)象。
open()第一個(gè)參數(shù)會(huì)在新窗口中顯示文檔的url,如果參數(shù)省,或?yàn)榭眨瑢?huì)使用空白頁(yè)面進(jìn)行顯示
about:blank
腳本無(wú)法通過(guò)簡(jiǎn)單的猜測(cè)窗口的名字來(lái)操縱窗口的web應(yīng)用。只有設(shè)置了允許導(dǎo)航的頁(yè)面才可以。
即,當(dāng)且僅當(dāng)窗口包含的文檔來(lái)自相同的源,或者這個(gè)腳本打開(kāi)的哪個(gè)窗口。(或者遞歸打開(kāi)的窗口),腳本才能通過(guò)名字指定存在的窗口,或者如果是一個(gè)窗口內(nèi)嵌在另一個(gè)窗口里的窗體,那么在它們的腳本之間可以相互導(dǎo)航。使用
_top(頂級(jí)祖先窗口)
和
_parent(直接父級(jí)窗口)
來(lái)獲取上下文。
窗口名字
窗口名字,運(yùn)行open()方法引用已存在的窗口。并同時(shí)可以作為標(biāo)簽a和標(biāo)簽form的taget的值,表示加載到哪
open第三個(gè)參數(shù)表明如何打開(kāi)這個(gè)標(biāo)簽的,以及大小(一般彈窗廣告喜歡這樣做)
// 打開(kāi)允許改變大小的瀏覽器的窗口,包含地址欄,工具欄和地址欄 var w = window.open("http://www.baidu.com/", "smallwin", "windth=200, height=350, statue=yes");
在新的窗口中運(yùn)行
window.name "smallwin"
第四個(gè)參數(shù)只在第二個(gè)參數(shù)命名的時(shí)候有用,是在當(dāng)前(原先)窗口是替換掉歷史記錄,還是新建一個(gè)歷史記錄,默認(rèn)是后者,因?yàn)橐付Q,才會(huì)在歷史記錄中儲(chǔ)存
窗口的返回值var w = window.open(); w.alert("about to visit https://www.google.com.hk/") // 在新的窗口調(diào)用alert()方法 w.location = "https://www.google.com" // 設(shè)置窗口的location,完成頁(yè)面的跳轉(zhuǎn)
w保存的是跳轉(zhuǎn)網(wǎng)頁(yè)的window對(duì)象的值
關(guān)閉窗口如果已經(jīng)使用open()打開(kāi)窗口,同樣可以用close()關(guān)閉其窗口
w.close(); undefined
這樣可以將w開(kāi)的窗口將其關(guān)閉
如果要關(guān)閉本窗口可以調(diào)用
close()
這樣就完成了頁(yè)面的關(guān)閉
即使一個(gè)窗口已經(jīng)關(guān)閉了,那么其window對(duì)象仍舊保存在其父窗口,直到父窗口關(guān)閉,window對(duì)象徹底的消失。其closed的值為true,并且document的值為null,其方法也不能使用
window對(duì)象的方法open()可以打開(kāi)并創(chuàng)建一個(gè)新的window對(duì)象(即創(chuàng)建一個(gè)新的窗口)并且該窗口是具有opener屬性,根據(jù)該屬性,可以打開(kāi)其原始窗口。
即,通過(guò)這樣兩個(gè)窗口可以實(shí)現(xiàn)相互引用。或者調(diào)用對(duì)方的方法。
如果一個(gè)窗口是頂級(jí)窗口,標(biāo)簽
則
parent == self true
self 屬性返回窗體本身,表明parent指向其窗體
如果一個(gè)窗體是在另外一個(gè)窗體之中,則parent.parent將會(huì)是頂級(jí)窗口。不管其嵌套了多少層,包括使用top屬性指向的都是最頂層窗口。
如果window本身就是頂層窗口,則top就是其窗口本身。其top就是parent
每個(gè)窗口窗體都是js的執(zhí)行上下文。以window對(duì)象作為全局對(duì)象,這樣的話,一個(gè)窗口窗體中的代碼可以應(yīng)用到其他窗口或者窗體(并且同源策略沒(méi)有進(jìn)行阻止)。那么他們之間可以完成交互。
好啦,不在過(guò)多解釋,畢竟這個(gè)已經(jīng)沒(méi)有什么用的了
window對(duì)象是客戶端js的全局變量,但是從技術(shù)上不是,web瀏覽器每次向窗口或者窗體載入新的內(nèi)容的時(shí)候,都是開(kāi)始一個(gè)新的js執(zhí)行上下文,包含一個(gè)新創(chuàng)建的全局對(duì)象。事實(shí)上,全局對(duì)象會(huì)在窗口或窗體載入新內(nèi)容時(shí)被替換,即window對(duì)象實(shí)際不是全局對(duì)象,是一個(gè)代理,即windowProxy
ps 需要注意一點(diǎn)的是在多個(gè)標(biāo)簽或者窗體的時(shí)候,每個(gè)窗體僅僅為一個(gè)線程,線程之間使用的是一個(gè)瀏覽器定義好的api 即 Window.localStorage 或者是 Cookie 加 輪詢達(dá)到多個(gè)標(biāo)簽之間的通信的目的。博客
www.iming.info
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/96590.html
摘要:前言本文講解前端面試的的內(nèi)容。復(fù)習(xí)前端面試的知識(shí),是為了鞏固前端的基礎(chǔ)知識(shí),最重要的還是平時(shí)的積累注意文章的題與題之間用下劃線分隔開(kāi),答案僅供參考。返回當(dāng)前文檔的標(biāo)題。改用則可以進(jìn)行針對(duì)性的和避免不必要的。 showImg(https://segmentfault.com/img/bVbv2GE?w=900&h=400); 1. 前言 本文講解前端面試的 HTML 的內(nèi)容。 復(fù)習(xí)前端面...
摘要:概述同源策略是對(duì)代碼能夠操作哪些內(nèi)容的一條完整的安全限制,也是由提出的一個(gè)著名的安全策略。同源策略的目的同源政策的目的,是為了保證用戶信息的安全,防止惡意的網(wǎng)站竊取數(shù)據(jù)。 [TOC] 1、概述 同源策略是對(duì)JavaScript代碼能夠操作哪些WEB內(nèi)容的一條完整的安全限制,也是由Netscape提出的一個(gè)著名的安全策略。所謂同源簡(jiǎn)單來(lái)說(shuō)就是三個(gè)相同,**1、域名相同2、協(xié)議相同3、端口...
摘要:概述同源策略是對(duì)代碼能夠操作哪些內(nèi)容的一條完整的安全限制,也是由提出的一個(gè)著名的安全策略。同源策略的目的同源政策的目的,是為了保證用戶信息的安全,防止惡意的網(wǎng)站竊取數(shù)據(jù)。 [TOC] 1、概述 同源策略是對(duì)JavaScript代碼能夠操作哪些WEB內(nèi)容的一條完整的安全限制,也是由Netscape提出的一個(gè)著名的安全策略。所謂同源簡(jiǎn)單來(lái)說(shuō)就是三個(gè)相同,**1、域名相同2、協(xié)議相同3、端口...
摘要:使用創(chuàng)建和管理窗體此系列文章的應(yīng)用示例已發(fā)布于可以或下載后運(yùn)行查看歡迎中的模塊允許您創(chuàng)建新的瀏覽器窗口或管理現(xiàn)有的瀏覽器窗口每個(gè)瀏覽器窗口都是一個(gè)單獨(dú)的進(jìn)程稱為渲染器進(jìn)程這個(gè)進(jìn)程像控制應(yīng)用程序生命周期的主進(jìn)程一樣,可以完全訪問(wèn)查看完整 使用 Electron 創(chuàng)建和管理窗體 此系列文章的應(yīng)用示例已發(fā)布于 GitHub: electron-api-demos-Zh_CN. 可以 Clon...
摘要:實(shí)際上是一個(gè)讓出線程的標(biāo)志遇到會(huì)立即返回一個(gè)狀態(tài)的。一個(gè)簡(jiǎn)單的防抖函數(shù)如果定時(shí)器存在則清除重新開(kāi)始定時(shí)執(zhí)行缺點(diǎn)只能在最后執(zhí)行,不能立即被執(zhí)行,在某些情況下不適用。假設(shè)壓入棧的所有數(shù)字均不相等。接收數(shù)據(jù)不受同源政策限制。 開(kāi)始 盡管秋招還沒(méi)有拿到offer(好難過(guò)),但是一些知識(shí)點(diǎn)還是要總結(jié)的,既然自己選了這條路,那就一定要堅(jiān)定不移的走下去...... 注意 new 運(yùn)算符的優(yōu)先級(jí) fu...
閱讀 1854·2023-04-25 23:28
閱讀 563·2023-04-25 22:49
閱讀 2241·2021-09-27 13:34
閱讀 5158·2021-09-22 15:09
閱讀 3609·2019-08-30 12:52
閱讀 2740·2019-08-29 15:26
閱讀 659·2019-08-29 11:12
閱讀 2190·2019-08-26 12:24