MCPcopy Create free account
hub / github.com/Tencent/kbone / $$trigger

Method $$trigger

packages/miniprogram-render/src/event/event-target.js:215–278  ·  view source on GitHub ↗

* 触发节点事件

(eventName, {
        event, args = [], isCapture, isTarget
    } = {})

Source from the content-addressed store, hash-verified

213 * 触发节点事件
214 */
215 $$trigger(eventName, {
216 event, args = [], isCapture, isTarget
217 } = {}) {
218 eventName = eventName.toLowerCase()
219 const handlers = this.$_getHandlers(eventName, isCapture)
220 const onEventName = `on${eventName}`
221
222 if (!event) {
223 const document = this.ownerDocument
224 const window = document ? document.defaultView : null
225 event = new Event({
226 timeStamp: window ? window.performance.now() : Date.now(),
227 touches: [],
228 changedTouches: [],
229 name: eventName,
230 target: this,
231 eventPhase: Event.AT_TARGET,
232 })
233 }
234
235 if ((!isCapture || !isTarget) && typeof this[onEventName] === 'function') {
236 // 触发 onXXX 绑定的事件
237 if (event && event.$$immediateStop) return
238 try {
239 event.returnValue = this[onEventName].call(this || null, event, ...args)
240 } catch (err) {
241 console.error(err)
242 this.$$triggerWindowError(err)
243 }
244 }
245
246 if (!handlers) return
247
248 // 触发 addEventListener 绑定的事件
249 if (handlers.length) {
250 [...handlers].forEach(handler => {
251 if (event && event.$$immediateStop) return
252 try {
253 handler.call(this || null, event, ...args)
254 } catch (err) {
255 console.error(err)
256 this.$$triggerWindowError(err)
257 }
258 })
259 }
260
261 // 触发 addEventListener 绑定到命名空间下的事件
262 if (handlers._namespace) {
263 Object.keys(handlers._namespace).forEach(namespace => {
264 const namespaceHandlers = handlers._namespace[namespace]
265 if (namespaceHandlers && namespaceHandlers.length) {
266 [...namespaceHandlers].forEach(handler => {
267 if (event && event.$$immediateStop) return
268 try {
269 handler.call(this || null, event, ...args)
270 } catch (err) {
271 console.error(err)
272 this.$$triggerWindowError(err)

Callers 15

$_triggerStorageMethod · 0.45
$_enterHistoryMethod · 0.45
$_checkUrlMethod · 0.45
$$openMethod · 0.45
$$endCheckHashMethod · 0.45
goMethod · 0.45
constructorMethod · 0.45
$_tryCatchMethod · 0.45
$_callRequestMethod · 0.45
$_requestSuccessMethod · 0.45
$_requestFailMethod · 0.45

Calls 3

$_getHandlersMethod · 0.95
$$triggerWindowErrorMethod · 0.95
nowMethod · 0.80

Tested by

no test coverage detected