第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

從 addEventListener 中提取帶有此關(guān)鍵字的綁定函數(shù)

從 addEventListener 中提取帶有此關(guān)鍵字的綁定函數(shù)

慕慕森 2021-08-26 14:58:04
我想修改一個(gè)如下所示的庫(kù)函數(shù):this.map.getContainer().addEventListener('touchstart', this.fire.bind(map, 'mousedown'));現(xiàn)在(如果我做對(duì)了),該函數(shù)會(huì)偵聽觸摸事件,如果發(fā)生,則調(diào)度相應(yīng)的鼠標(biāo)事件。所以它告訴地圖對(duì)象像處理鼠標(biāo)事件一樣處理觸摸事件。this.map.on('mousedown', this.eventHandlers.mouseDown);this.eventHandlers = {    mouseDown: this.events.mouseDown.bind(this),};我想修改上面的函數(shù),以便區(qū)分單指觸摸事件和多點(diǎn)觸摸事件,如下所示:element.addEventListener('touchstart', onTouchStart);function onTouchStart(e) {     if (e.touches.length > 1) { foo() } else { this.fire.bind(map, 'mousedown') }};但是,僅將上述偵聽器函數(shù)放在那里是行不通的。我嘗試使用 e.currentTarget 并創(chuàng)建一個(gè) var otherThis = this,然后用 otherThis 替換它,但它沒有用。我收到以下錯(cuò)誤:未捕獲的類型錯(cuò)誤:無(wú)法讀取 HTMLDivElement.onTouchStart 處未定義的屬性“綁定”非常感謝幫助!
查看完整描述

2 回答

?
拉風(fēng)的咖菲貓

TA貢獻(xiàn)1995條經(jīng)驗(yàn) 獲得超2個(gè)贊

這是XY 問題的一個(gè)實(shí)例。


您不需要將觸摸事件轉(zhuǎn)換為鼠標(biāo)事件(touchstart→ mousedown、touchmove→ mousemove、touchend→ mouseup),反之亦然:瀏覽器已經(jīng)為您完成了。


我強(qiáng)烈建議您觀看2015 年的“Getting Touchy”演示并閱讀相應(yīng)的幻燈片。它深入解釋了不同的瀏覽器如何在觸摸事件的同時(shí)調(diào)度鼠標(biāo)(和指針)事件。


即使你是調(diào)度mousedown/ up/move只為觸摸事件的一些情況,您將會(huì)收到重復(fù) mousedown/ up/move事件的單點(diǎn)觸摸。


另一方面:在這里綁定事件處理程序的一種干凈的方法......


element.addEventListener('touchstart', onTouchStart);

function onTouchStart(e) { 

    if (e.touches.length > 1) { foo() } else { this.fire.bind(map, 'mousedown') }

};

...將是...


element.addEventListener('touchstart', onTouchStart.bind(this));

function onTouchStart(e) { 

    if (e.touches.length > 1) { foo() } else { this.fire('mousedown') }

};

請(qǐng)注意bind()調(diào)用是如何應(yīng)用于事件處理程序函數(shù)的,而不是應(yīng)用于事件處理程序內(nèi)部的函數(shù)調(diào)用。這使得this事件處理程序內(nèi)部的值成為 的參數(shù)bind()。


“傳單方式”將是......


L.DomEvent.on(element, 'touchstart', onTouchStart, this)

...這是幾個(gè)包裝器bind和addEventListener。L.DomEvent還處理瀏覽器的怪癖(dblclick在某些情況下在觸摸屏上),并翻譯非標(biāo)準(zhǔn)的 IE10 MSPointerDown(等),以便touch*使用 IE10 和觸摸屏的 Win7 機(jī)器上的事件將起作用。


查看完整回答
反對(duì) 回復(fù) 2021-08-26
?
HUH函數(shù)

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超4個(gè)贊

這里:


function onTouchStart(e) { 

    if (e.touches.length > 1) { foo() } else { this.fire.bind(map, 'mousedown') }

};

問題是this.fire.bind(map, 'mousedown')。這段代碼沒有副作用,它只是定義了一個(gè)函數(shù)。請(qǐng)參閱綁定。但實(shí)際上并沒有調(diào)用它。


要調(diào)用它,您可以使用:


this.fire('mousedown');


查看完整回答
反對(duì) 回復(fù) 2021-08-26
  • 2 回答
  • 0 關(guān)注
  • 201 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)