完整代碼如下,很簡單的一段代碼
// ==UserScript==
// @name test
// @namespace http://tampermonkey.net/
// @version 0.1
// @description try to take over the world!
// @author You
// @match https://live.bilibili.com/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
;(function func() {
const injectAnchor = document.getElementsByClassName('right-action')[0]
console.log(injectAnchor)
if (injectAnchor) {
console.log('find injectAnchor')
} else {
requestAnimationFrame((function () {
func()
}))
}
})();
})();
就是用requestAnimationFrame找包含right-action這個類的元素,找到就停止。
這段代碼直接放控制臺執行就沒問題(chrome瀏覽器)。
但是放到tampermonkey里就會無限執行,找到了類也停不下來,如下圖:

可以看到代碼已經進入if了,可是后面還是去執行else里的requestAnimationFrame。
腳本匹配的是b站任意一個直播間,求解這是為什么?
uj5u.com熱心網友回復:
加個return false 試試uj5u.com熱心網友回復:
試過了,還是不行...這問題我研究一上午了,簡直莫名其妙
uj5u.com熱心網友回復:
不使用閉包,直接定義方法然后呼叫也試過了,也不行。
uj5u.com熱心網友回復:
console.log('find injectAnchor');return false;
uj5u.com熱心網友回復:
console.log('find injectAnchor');
return false;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/72341.html
標籤:JavaScript
