Jquery select在setTimeout里无法使用

$在setTimeout里无法使用,具体平台是斗鱼www.douyu.com,想要自动关闭弹幕写了个tampermonkey插件,就使用了如下代码

$("div[class^='showdanmu-']").click()

F12在控制台直接输入是正常的,以上语句可以找到下面的div:

<div class="showdanmu-42b0ac removed-9d4c42" title="关闭弹幕"></div>

但是放到js里面的延时函数里就不行了,具体代码如下:

setTimeout(function(){$("div[class^='showdanmu-']").click();console.log("###Douyu###");},5000);

报错如下:

VM1850:1 Uncaught ReferenceError: $ is not defined    at <anonymous>:1:31

于是,我又试了下简单的控制台直接输入

setTimeout(function(){console.log(typeof($));console.log("###Douyu###");},5000);

得到如下结果

5572VM2021:1 undefined
VM2021:1 ###Douyu###

问题:是斗鱼用了什么类似作用域的东西限制了在setTimeout里面的$的使用吗?前端接触不久不是很了解,此前版本这个语句在斗鱼上跑的一切正常最近开始找不到$的。

插件地址:
https://greasyfork.org/script...

现在暂时方案是里面自己加了jquery引用,但是似乎会跟斗鱼自己的冲突,导致关注页面加载异常所以不得不在此求助各位大牛


慕斯王
浏览 760回答 0
0回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript