onload 的时候很多东西还没加载出来,直接执行达不到我需要的效果,js 只会一些基础的东西,对这种情况没什么好的思路,我现在的做法是用 setinterval 每一秒检查一次需要的东西有没有加载出来,但这样感觉效率好低,有更好的办法吗
1
iPc666 2022-05-26 11:17:56 +08:00
用 MutationObserver ,把
```js const eleObserver = new MutationObserver((ele) => { //判断 ele 里有你要的元素 //然后执行操作 }); eleObserver.observe(document.body, {childList: true, subtree: true}); ``` |
2
wdssmq 2022-05-26 11:26:00 +08:00
// 元素变化监听
const fnElChange = (el, fn = () => { }) => { const observer = new MutationObserver((mutationRecord, mutationObserver) => { // _log('body attributes changed!!!'); // body attributes changed!!! // _log('mutationRecord = ', mutationRecord); // [MutationRecord] // _log('mutationObserver === observer', mutationObserver === observer); // true fn(mutationRecord, mutationObserver); mutationObserver.disconnect(); // 取消监听,正常应该在回调函数中根据条件决定是否取消 }); observer.observe(el, { // attributes: false, // attributeFilter: ["class"], childList: true, // characterData: false, subtree: true, }); }; 可以封装一下; wdssmq/userscript: 各种猴子脚本 https://github.com/wdssmq/userscript |
3
cheneydog 2022-05-26 11:32:15 +08:00
|