.click()/.trigger('click') 不适用于 Spotify 中的 Tampermonkey

Posted

技术标签:

【中文标题】.click()/.trigger(\'click\') 不适用于 Spotify 中的 Tampermonkey【英文标题】:.click()/.trigger('click') doesn't work with Tampermonkey in Spotify.click()/.trigger('click') 不适用于 Spotify 中的 Tampermonkey 【发布时间】:2018-01-04 00:53:54 【问题描述】:

我正在尝试编写一个脚本,该脚本将在某个事件之后跳到 Spotify 上的下一首歌曲,但我无法让它工作。

我知道这里已经有很多这样的问题,但我尝试了所有答案,但它们对我不起作用。

当我尝试使用 Chrome 控制台时,这些工作正常,但不在脚本中:

document.getElementsByClassName('spoticon-skip-forward-16')[0].click(); /*or*/
document.getElementsByClassName('spoticon-skip-forward-16')[0].trigger('click');

jQuery('spoticon-skip-forward-16:first').click(); /*or*/
jQuery('spoticon-skip-forward-16:first').trigger('click');

   jQuery('spoticon-skip-forward-16:first').each(function () 
        jQuery(this).css("color", "yellow");
        var clickEvent  = document.createEvent("MouseEvents");
        clickEvent.initEvent ("click", true, true);
        this.dispatchEvent (clickEvent);
    );

jQuery('spoticon-skip-forward-16:first') 可以代替 jQuery('spoticon-skip-forward-16').get(0) strong> 或 jQuery('spoticon-skip-forward-16')[0],它们都可以在控制台中工作,但不能在 Tampermonkey 中工作。

我知道该事件会发生,因为我已设置在单击之前更改按钮颜色,并且每次都会发生。

我没有收到任何错误,我尝试了 try and catch 但没有任何反应。

【问题讨论】:

您确定document.getElementsByClassName('spoticon-skip-forward-16')[0].trigger('click'); 有效吗?我很惊讶 DOM 元素有一个 trigger 方法 【参考方案1】:

您忘记添加 每当您在 jQuery 中按类引用元素时,您需要在类名前面添加 .

错误

jQuery('spoticon-skip-forward-16:first').click(); /*or*/
jQuery('spoticon-skip-forward-16:first').trigger('click');

改为

jQuery('.spoticon-skip-forward-16:first').click(); /*or*/
jQuery('.spoticon-skip-forward-16:first').trigger('click');

Example jsFiddle

$('.spoticon-skip-forward-16').click(function()
	console.log($(this).attr('id'));
);

$('.spoticon-skip-forward-16:first').click(); 
$('.spoticon-skip-forward-16:last').click(); 

$('.spoticon-skip-forward-16').each(function () 
  $(this).css(
    color: 'yellow',
    background: '#000'
  );
  var clickEvent  = document.createEvent("MouseEvents");
  clickEvent.initEvent ("click", true, true);
  this.dispatchEvent (clickEvent);
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button type="submit" class="spoticon-skip-forward-16" id="btn1">
Submit
</button>

<button type="submit" class="spoticon-skip-forward-16" id="btn2">
Submit
</button>

<button type="submit" class="spoticon-skip-forward-16" id="btn3">
Submit
</button>

【讨论】:

以上是关于.click()/.trigger('click') 不适用于 Spotify 中的 Tampermonkey的主要内容,如果未能解决你的问题,请参考以下文章

如何获取 JQuery.trigger('click');启动鼠标点击

jquery中,.trigger('click');事件和.click();的应用是否同一个道理?

jquery 新手想问一下trigger('click')问题

如何用jquery的trigger方法模拟点击事件

小5聊jQuery基础之触发a标签的click事件无效的解决方法

trigger()