xuxiaobo-bobo 28c0fc3999 '0218'
2023-02-18 03:07:48 +08:00

245 lines
7.0 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//异步;;;
// 宏队列macrotask,也叫tasks.一些异步任务的回调会依次进入 macro task queue等待后渎被调用这些异步任务包括
// setTimeout
// setInterval
// setImmediate(Node独有)
// requestAnimationFrame(浏览器独有)
// I/O
// UI rendering(浏览器独有)
// 微队列microtask,也叫jobs。另一些异步任务的回调会依次进入micro task queue,等待后渎被调用,这些异步任务包括:
// process.nextTick(Node独有)
// Promise
// Object.observe
// MutationObserver
//先执行微任务,在执行宏任务
let HTMLElement_promise=bodavm.memory.asyncEvent['HTMLElement']
for (const key in HTMLElement_promise) {
let leng_=HTMLElement_promise[key].length
for (let i = 0; i < leng_; i++) {
console.log(`HTMLElement_promise异步事件执行`,`type:${HTMLElement_promise[key]}`,`func:${HTMLElement_promise[key][i]}`);
HTMLElement_promise[key][i]()
}
}
// debugger
// addEventListener 比settimeout先执行
// // debugger
//setTimeout
noexecListener={
'unload':true,
'popstate':true,
'driver-evaluate':true,
'webdriver-evaluate':true,
'contextmenu':true,
'selenium-evaluate':true,
'error':true
}
// addEventListener 比settimeout先执行
if (bodavm.memory.asyncEvent.listener) {
for (const key in bodavm.memory.asyncEvent.listener) {
let event = bodavm.memory.asyncEvent.listener[key]
debugger
for (let i = 0; i < event.length; i++) {
// debugger
if (noexecListener[event[i].type]){
console.log(`开始执行浏览器事件==========`,`当前为事件类型为==>: ${event[i].type} 无需执行`);
continue
}
console.log(`开始执行浏览器事件==========`,`当前为事件类型为==>: ${event[i].type}`);
try{
window.dispatchEvent(event[i],'bobobo')
}catch{
console.log(`浏览器事件执行失败==========`,`当前为事件类型为==>: ${event[i].type}`);
}
}
}
}
// let setTimeEvent = bodavm.memory.asyncEvent.setTimeout
// console.log(`当前setTimeEvent有===>${JSON.stringify(setTimeEvent)}`)
// if (setTimeEvent) {
// setTimeEvent.sort((a, b) => {
// return a.timeoutID > b.timeoutID ? 1 : -1;
// })
// setTimeEvent.sort((a, b) => {
// return a.delay > b.delay ? 1 : -1;
// })
// for (let i = 0; i < setTimeEvent.length; i++) {
// let event = setTimeEvent[i]
// if (event == undefined) { continue }
// console.log(`异步回调执行settime=======================================>${JSON.stringify(event)} callback:${event.callback}`);
// if (event.type) {
// event.callback()
// } else {
// eval(event.callback)
// }
// }
// }
// 鼠标事件最后执行,模仿网站加载完成后再移动鼠标触发事件
// //鼠标轨迹,获取实际网站的
// let mouseEvent = [
// {
// "clientX": 154,
// "clientY": 514,
// "timeStamp": 14198.5,
// "type": "mousemove"
// },
// {
// "clientX": 154,
// "clientY": 513,
// "timeStamp": 14203.700000001118,
// "type": "mousemove"
// },
// {
// "clientX": 154,
// "clientY": 511,
// "timeStamp": 14211.5,
// "type": "mousemove"
// },
// {
// "clientX": 154,
// "clientY": 508,
// "timeStamp": 14219.700000001118,
// "type": "mousemove"
// },
// {
// "clientX": 155,
// "clientY": 506,
// "timeStamp": 14227.5,
// "type": "mousemove"
// },
// {
// "clientX": 157,
// "clientY": 503,
// "timeStamp": 14236,
// "type": "mousemove"
// },
// {
// "clientX": 158,
// "clientY": 498,
// "timeStamp": 14243.599999999627,
// "type": "mousemove"
// },
// {
// "clientX": 160,
// "clientY": 495,
// "timeStamp": 14251.900000000373,
// "type": "mousemove"
// },
// {
// "clientX": 162,
// "clientY": 492,
// "timeStamp": 14260.300000000745,
// "type": "mousemove"
// },
// {
// "clientX": 162,
// "clientY": 490,
// "timeStamp": 14268.700000001118,
// "type": "mousemove"
// },
// {
// "clientX": 164,
// "clientY": 487,
// "timeStamp": 14276,
// "type": "mousemove"
// },
// {
// "clientX": 165,
// "clientY": 486,
// "timeStamp": 14283.599999999627,
// "type": "mousemove"
// },
// {
// "clientX": 165,
// "clientY": 485,
// "timeStamp": 14292.099999999627,
// "type": "mousemove"
// },
// {
// "clientX": 166,
// "clientY": 485,
// "timeStamp": 14299.599999999627,
// "type": "mousemove"
// },
// {
// "clientX": 166,
// "clientY": 484,
// "timeStamp": 14308,
// "type": "mousemove"
// },
// {
// "clientX": 166,
// "clientY": 484,
// "timeStamp": 14497.900000000373,
// "type": "mousedown"
// },
// {
// "clientX": 166,
// "clientY": 484,
// "timeStamp": 14506.800000000745,
// "type": "mousemove"
// },
// {
// "clientX": 166,
// "clientY": 484,
// "timeStamp": 14515.800000000745,
// "type": "mousemove"
// },
// {
// "clientX": 166,
// "clientY": 484,
// "timeStamp": 14555.800000000745,
// "type": "mouseup"
// }
// ];
// // debugger
// if (bodavm.memory.asyncEvent.listener) {
// for (let i = 0; i < mouseEvent.length; i++) {
// let event = mouseEvent[i];
// let type = event.type;
// let mouseEventObj = {
// "isTrusted": true
// };
// mouseEventObj = Object.setPrototypeOf(mouseEventObj, MouseEvent.prototype);
// bodavm.toolsFunc.setProtoAttr.call(mouseEventObj, "clientX", event.clientX);
// bodavm.toolsFunc.setProtoAttr.call(mouseEventObj, "clientY", event.clientY);
// bodavm.toolsFunc.setProtoAttr.call(mouseEventObj, "timeStamp", event.timeStamp);
// bodavm.toolsFunc.setProtoAttr.call(mouseEventObj, "type", event.type);
// //bodavm.toolsFunc.setProtoAttr.call(mouseEventObj, "pagex", event.type);
// let listenerList = bodavm.memory.asyncEvent.listener[type];
// //debugger;
// console.log(`listenerList====>`, listenerList)
// if(listenerList ==undefined){debugger;continue}
// for (let j = 0; j < listenerList.length; j++) {
// let callBack = listenerList[j].listener;
// let self = listenerList[j].self;
// console.log(`执行异步回调second=======>`, `self:${self} mouseEventObj:${mouseEventObj}`);
// callBack.call(self, mouseEventObj);
// }
// }
// }