當前位置:
首頁 > 最新 > 如何從地址欄抽取對象

如何從地址欄抽取對象

GIF/1K

1. 打開和關閉窗口

2. history,location

3. ***定時器

4. navigator

5. ***event

1. 打開和關閉窗口:

window.open("url","name")

name屬性: 每個窗口都有一個name屬性

在內存中唯一標識一個窗口

瀏覽器要求,相同name屬性的窗口只能打開一個,後打開的新窗口會覆蓋先打開的同名窗口

其實: open的第二個參數和a元素的target屬性值,都是name屬性

三種情況:

1. 如果使用自定義的name值,則在新窗口打開,只能打開一個

2. 如果使用_self,則新窗口替換當前窗口:

_self的意思是,使用當前窗口自己的name值,打開新窗口

3. 如果使用_blank,則在新窗口打開,可隨意打開多個

_blank的意思是,不指定name值,瀏覽器會隨機分配name值,幾乎不會重複。

2. history和location

history: 保存當前窗口打開後,成功訪問過的url的歷史記錄棧

如何: history.go(n)

.go(1) 前進一次

.go(0) 刷新

.go(-1) 後退一次

.go(-2) 後退兩次

location: 保存當前窗口正在打開的url的對象

屬性:

.href: 獲得完整url

.protocol: 協議

.host: 主機名+埠號

.hostname: 主機名

.port: 埠號

.pathname: 相對路徑

.hash: 錨點地址

.search: 查詢字元串

打開新鏈接, 可以後退:

location.assign("url") location.href="url"

open("url","_self")

其實可以更簡單: location="url"

打開新鏈接,禁止後退:

location.replace(url)

用新的url代替history中當前url記錄

刷新:

普通刷新: 優先從本地緩衝獲取文件,如果緩存沒有或過期,才從伺服器下載新文件

history.go(0)

F5

location.reload(/*false*/) 不強迫

強制刷新: 跳過本地緩存,始終從伺服器獲取新文件

location.reload(true) 強迫

3. ***定時器: 2種:

1. 周期性定時器:

什麼是: 讓程序每隔一段時間間隔,自動反覆執行一項任務

何時: 讓程序每隔一段時間間隔,自動反覆執行一項任務時

如何: 3件事:

1. 任務函數: 定時器反覆調用的函數

2. 啟動定時器: var timer=setInterval(task,ms)

創建一個新定時器對象,每隔ms毫秒,反覆自動調用task函數

其中: 返回定時器序號timer,專用於停止定時器

3. 停止定時器: clearInterval(timer)

問題: 不能自動清除timer中殘留的序號

強烈建議: 手動timer=null

2中方式:

1. 用戶手動操作

2. 自動停止:

在任務函數中設定臨界值

如果到達臨界值,則自動調用clearInterval

2. 一次性定時器:

什麼是: 先等待一段時間,再自動執行一次任務,執行後自動停止

何時: 延遲執行一項任務時

如何: 3件事:

1. 任務函數:

2. 啟動定時器: var timer=setTimeout(task,ms)

先等待ms毫秒,再執行一次task,執行後自動停止

3. 停止定時器: clearTimeout(timer)

建議: timer=null

定時器的原理:

setXXX(task,ms)

在主程序之外,創建定時器對象,保存回調函數task

定時器對象根據ms,決定何時自動調用task函數

定時器調用task函數時,無權立刻直接調用task,必須先將task加入回調隊列中等待。

等待主程序全部執行完,回調隊列中的函數,才能執行

4. ***event

什麼是事件: 瀏覽器自動觸發的,或用戶手動觸發的頁面狀態改變

什麼是事件處理函數: 當事件發生時,自動調用的函數

綁定事件處理函數: 將一個函數,賦值給元素的事件屬性

當事件發生時,自動調用函數

如何綁定: 3種:

1. 在HTML中:

問題: 不符合內容與行為分離的元素,不便於維護和重用

2. 在js中, 用賦值方式綁定:

elem.on事件名=function(){

this->當前觸發事件的元素elem

}

問題: 一個事件屬性,只能綁定一個處理函數

3. 在js中, 用addEventListener

elem.addEventListener("事件名",fun)

優: 一個事件屬性,可同時添加多個事件監聽

解除綁定: elem.removeEventListener("事件名",fun)

強調: 如果處理函數可能解綁,就必須用有名稱的函數來綁定。解除時,才能用函數名解除綁定。

因為,解除綁定時,要求,必須指定原函數對象

事件模型: 3個階段:

1. 捕獲: 由外向內,依次記錄各級父元素上綁定的相同事件的處理函數

2. 目標觸發: 優先觸發目標元素上綁定的處理函數

目標元素: 最初,實際觸發事件的元素

3. 冒泡: 由內向外,按照捕獲階段記錄的反向,依次觸發各級父元素上綁定的處理函數

事件對象:

什麼是: 事件發生時,自動創建的,

封裝事件信息,並提供修改事件行為的API的對象

何時: 只要希望獲得事件中的信息,或希望修改事件的默認行為時

如何:

獲取: 默認,事件對象,總是作為處理函數的第一個參數自動傳入!

function 處理函數(e){

e->事件對象

}

API:

取消冒泡/阻止蔓延: e.stopPropagation()

利用冒泡:

優化: 盡量減少事件監聽的個數:

為什麼: 瀏覽器觸發事件靠遍歷,事件監聽越多,遍歷時間越長,導致響應速度變慢

如何: 利用冒泡:

如何利用: 如果多個平級子元素,要綁定相同的事件時,其實,只要在父元素綁一次,所有子元素,就可共用!

為什麼: 冒泡

2個難題:

1. 獲得目標元素:

錯誤: this, this已經指父元素,不再指子元素

正確: e.target 始終記錄著最初點擊的目標元素

2. 目標元素不一定是想要的:

在處理函數中,先判斷當前目標元素的特徵是否符合要求,再決定是否繼續執行。

阻止默認行為: e.preventDefault();

何時: 當事件具有的默認行為,不想要時

典型:

1. a元素作為按鈕時,會自動在地址欄添加#xxx錨點地址

2. 如果驗證未通過,則阻止表單自動提交

form.onsubmit事件: 在無論以任何方式正式提交表單之前,自動觸發。

3. H5中做拖拽之前,必須阻止瀏覽器默認的拖拽行為

(本文所有權歸作者所有,如需轉載請聯繫本平台。)

知道你會來

所以我一直在這裡等

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 思維神探 的精彩文章:

TAG:思維神探 |

您可能感興趣

塔羅牌抽取一張牌,測試你的前任是否對你還戀戀不忘?
道具抽取必須精確次數,廠商早有應對之策!
安迪塔羅牌測試:誠心抽取一張牌,看TA對你是否有情?
闢謠!急性心肌梗死既然能把血栓抽取出來?為啥還給患者放支架?
蘋果:醫療平台應用將無需抽取傭金
非人哉:哪吒去體檢,卻在他身上抽取到了純天然的「荷花精華」?
截圖,抽取你的愛情上上籤
如果抽取十年的壽命換取一顆惡魔果實,你會選擇哪一顆?選D明智
安迪塔羅占卜:抽取一張牌,測試近期你的愛情運勢如何?
黑洞在吞噬恆星前會先抽取出星體物質,然後在慢慢吸收進去!
情感測試:為他抽取一張塔羅牌,占卜你們的戀愛適合結婚嗎?
安迪塔羅牌占卜:抽取一張牌,測試近期你的桃花運勢如何?
美科學家實現突破!只要存在溫差,即可從空氣直接抽取無限電力!
孤影掌握魔法球規律抽取幽冥火?終歸還是沒能逃脫氪金魔掌
火影:4種抽取查克拉的方式,第2個佐助看了氣憤,雛田欲哭無淚
被遺忘的「免費「獎勵,快來抽取你的稀有道具……
抽取碎片化的時間練瑜伽,只要你合理利用,也能有瘦身的效果!
我抽中的新年簽是高富帥,快來抽取你的吧!
抽取你的姓名釋義
安迪塔羅占卜:抽取一張牌,測試你的ta有沒有背叛你?