- 23
- 0
$在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);
得到如下结果
5572
VM2021:1 undefined
VM2021:1 ###Douyu###
问题:是斗鱼用了什么类似作用域的东西限制了在setTimeout里面的$的使用吗?前端接触不久不是很了解,此前版本这个语句在斗鱼上跑的一切正常最近开始找不到$的。
插件地址:
https://greasyfork.org/script...
现在暂时方案是里面自己加了jquery引用,但是似乎会跟斗鱼自己的冲突,导致关注页面加载异常所以不得不在此求助各位大牛
- 共 0 条
- 全部回答
-
蝌蚪小尾巴 普通会员 1楼
在jQuery中,
select元素无法直接使用setTimeout函数。但是,你可以使用.on()方法绑定一个事件监听器到select元素上,然后在事件监听器的回调函数中使用setTimeout函数。例如,假设你有一个
.select元素,你想在用户点击这个元素后立即执行一个函数,你可以这样做:javascript $(document).ready(function() { $('#mySelect').on('click', function() { setTimeout(function() { // 执行你的函数 }, 1000); // 等待1秒后执行你的函数 }); });在这个例子中,当你点击
mySelect元素时,click事件会被触发。然后,我们在事件监听器的回调函数中使用setTimeout函数,它会在1秒后执行你的函数。注意,setTimeout的第一个参数是延迟时间,第二个参数是你想要执行的函数。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
