? ? ? ?用戶每次訪問一個(gè)網(wǎng)站,都是瀏覽器在和當(dāng)前渲染過的網(wǎng)頁的DOM進(jìn)行交互。即使用戶并沒有點(diǎn)擊網(wǎng)頁上的任何元素,也沒有填寫任何表單,瀏覽器也可能捕獲到一些對(duì)攻擊者有價(jià)值的信息。例如,即使用戶在網(wǎng)頁中點(diǎn)擊了幾次后又來點(diǎn)擊其他地方,那么瀏覽器還是已經(jīng)觸發(fā)了兩個(gè)不同的事件:focus和blur。
? ? ? ?繼續(xù)之前的例子,執(zhí)行下面的JavaScript代碼,就能夠監(jiān)聽focus事件:
? ? ? ?window.addEventListener("focus", function(event) {
? ? ? ?alert("The window has been focused");
? ? ? ?});
? ? ? ?有一點(diǎn)江西網(wǎng)絡(luò)公司小編想說的是:IE6 到IE8 并不支持addEventListener() 方法, 不過它們可以使用功能類似的addachEvent()函數(shù)代替。jQuery提供了更加友好的on()函數(shù),可以簡(jiǎn)化事件監(jiān)聽的操作。使用BeEF提供的jQuery后,上面的代碼會(huì)變成:
? ? ? ?$j(window).on("focus", function(event) {
? ? ? ?alert("The window has been focused");
? ? ? ?});
? ? ? ?不僅如此,jQuery還提供了focus()方法,可以進(jìn)一步簡(jiǎn)化代碼:
? ? ? ?$j(window).focus(function(event) {
? ? ? ?alert("The window has been focused");
? ? ? ?});
? ? ? ?再增加一些代碼,則我們同時(shí)可以在用戶將焦點(diǎn)從窗口中移除時(shí)捕獲事件:
? ? ? ?$j(window).focus(function(event) {
? ? ? ?alert("The window has been focused");
? ? ? ?}).blur(function(event) {
? ? ? ?alert("The window has lost focus");
? ? ? ?});
? ? ? ?此外,由于調(diào)用jQuery的方法時(shí),通常返回自身的實(shí)例,所以當(dāng)我們?cè)谡{(diào)用多個(gè)方法時(shí)可以使用鏈?zhǔn)秸{(diào)用,就像之前那段代碼所示。這段代碼監(jiān)聽了window對(duì)象上的focus和blur事件,這和BeEF初始化日志方法的代碼非常類似,不同之處在于BeEF不是調(diào)用alert()函數(shù),而是使用之前講過的beef.net.send()函數(shù),把事件日志傳回BeEF的服務(wù)器。
? ? ? ?在W3C的DOM 3級(jí)事件模型草案5的文檔中,焦點(diǎn)事件類型并不局限于blur和focus。除了document元素自身外,DOM中的任一元素都可以響應(yīng)全部的焦點(diǎn)事件。除blur和focus外,W3C還定義了如下一些與焦點(diǎn)相關(guān)的事件,按它們觸發(fā)的次序排列如下:
? ? ? ?focusin:在目標(biāo)元素真正獲得焦點(diǎn)之前觸發(fā)。
? ? ? ?focus:在目標(biāo)元素真正獲得焦點(diǎn)時(shí)觸發(fā)。
? ? ? ?DOMFocusIn:棄用的DOM事件,推薦使用focus和focusin替代。
? ? ? ?Focusout:在目標(biāo)元素改變焦點(diǎn)之后觸發(fā)。
? ? ? ?blur:在目標(biāo)元素失去焦點(diǎn)時(shí)觸發(fā)。
? ? ? ?DOMFocusOut:棄用的DOM事件,推薦使用blur和focusout替代。
? ? ? ?通常來講,相比元素失去焦點(diǎn)時(shí),瀏覽器會(huì)在元素獲得焦點(diǎn)時(shí)觸發(fā)更多事件。其中多數(shù)事件都會(huì)在響應(yīng)時(shí)傳入event對(duì)象,其中包含了獲得焦點(diǎn)的元素的信息,以及元素在事件流中的位置等。
? ? ? ?對(duì)攻擊者而言,理解和捕獲焦點(diǎn)事件是非常有用的,因?yàn)橥ㄟ^它們,我們可以洞察到目標(biāo)用戶是否正在瀏覽特定的窗口,是否已經(jīng)切換到不同的標(biāo)簽頁,或者是否已經(jīng)將瀏覽器最小化,這些數(shù)據(jù)都可能在一個(gè)大型攻擊策略中發(fā)揮重要作用。
? ? ? ?以上所述就是關(guān)于jQuery 事件中focus() 的用法,如果還有哪些不明白的地方,可隨時(shí)來電和我們聯(lián)系。百恒網(wǎng)絡(luò)作為一家專業(yè)從事網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)等服務(wù)的優(yōu)秀江西網(wǎng)絡(luò)公司,自然精通各種網(wǎng)絡(luò)技術(shù)以及建站技術(shù),也只有這樣才能為更多有需要的朋友服務(wù),幫助他們解決難題。因此,只要您有需要,我們將隨時(shí)為您排憂解難!