jquery trigger('mouseenter')在tampermonkey中无效
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery trigger('mouseenter')在tampermonkey中无效相关的知识,希望对你有一定的参考价值。
在console里面是可以用trigger('mouseenter')触发的,用mouseenter()、mouseover()也行,但是把一样的语句写进tampermonkey里面就无效了,trigger('click')就无问题。
参考技术A 因为你调用的时候,页面还没有载入元素,报空。追问我放在$(document).ready()里面了 $(window).load()也试过,而且用$("对应元素").length也能追踪到,就是mouseenter不触发
参考技术B 你把这255分给我发个远程我帮你写好得了,我缺点积分.追问就是斗鱼直播,有个抢宝箱,原来只要模拟click就行,现在必须触发了mouseenter之后click才有效,在控制台mouseenter之后click是有效的,写到tampermonkey之后就失效了。你可以去试试,能解决再给你255也行
如何获取 JQuery.trigger('click');启动鼠标点击
【中文标题】如何获取 JQuery.trigger(\'click\');启动鼠标点击【英文标题】:How to get JQuery.trigger('click'); to initiate a mouse click如何获取 JQuery.trigger('click');启动鼠标点击 【发布时间】:2014-01-22 14:44:34 【问题描述】:我很难理解如何使用 JQuery 模拟鼠标点击。有人可以告诉我我做错了什么。
HTML:
<a id="bar" href="http://***.com" target="_blank">Don't click me!</a>
<span id="foo">Click me!</span>
jQuery:
jQuery('#foo').on('click', function()
jQuery('#bar').trigger('click');
);
演示:FIDDLE
当我点击按钮 #foo 时,我想模拟点击 #bar 但是当我尝试这样做时,什么也没有发生。我也试过jQuery(document).ready(function()...)
,但没有成功。
【问题讨论】:
jQuery trigger
仅在添加任何“jQuery click”事件时才有效。否则你将无法通过这种方式做任何事情;
这是浏览器内置的安全措施。请参阅@Blazemonger 的回答:***.com/questions/7999806/…
@san.chez 有趣,感谢您提供的信息,以前不知道此安全措施!
【参考方案1】:
就用这个吧:
$(function()
$('#watchButton').trigger('click');
);
【讨论】:
【参考方案2】:你只需要在做.click()
之前放一个小的超时事件
像这样:
setTimeout(function() $('#btn').click(), 100);
【讨论】:
如果您尝试在页面加载时模拟点击,则非常适合。 这也解决了我的问题,谢谢。其他解决方案都没有可靠地工作。我的代码显示了一个模式,然后模拟了一个选项卡上的点击。为什么需要延迟?为了安全起见,我不得不使用 500 毫秒。【参考方案3】:可能有用:
调用触发器的代码应该在事件被调用之后执行。
例如,我想在#expense_tickets 值更改时执行一些代码,以及在重新加载页面时执行
$(function()
$("#expense_tickets").change(function()
// code that I want to be executed when #expense_tickets value is changed, and also, when page is reload
);
// now we trigger the change event
$("#expense_tickets").trigger("change");
)
【讨论】:
啊这也是我的问题!对为什么trigger()
不起作用感到困惑。原来我在它调用的函数之上设置了触发代码——所以钩子实际上并没有到位。哇!【参考方案4】:
技术上不是这个问题的答案,但可以很好地使用已接受的答案 (https://***.com/a/20928975/82028) 为 jQuery ACF 字段上的选项卡创建下一个和上一个按钮:
$('.next').click(function ()
$('#primary li.active').next().find('.acf-tab-button')[0].click();
);
$('.prev').click(function ()
$('#primary li.active').prev().find('.acf-tab-button')[0].click();
);
【讨论】:
【参考方案5】:试试这个对我有用的:
$('#bar').mousedown();
【讨论】:
【参考方案6】:我已经尝试了前两个答案,直到我从文件输入元素中删除“display:none”之前它对我不起作用。 然后我恢复到 .trigger() 它也适用于 windows 的 safari。
所以结论,不要使用 display:none;要隐藏您的文件输入,您可以改用 opacity:0。
【讨论】:
【参考方案7】:你需要使用jQuery('#bar')[0].click();
to simulate a mouse click on the actual DOM element(不是jQuery对象),而不是使用.trigger()
jQuery方法。
注意:DOM 级别 2 .click()
不适用于 some elements in Safari。您将需要使用一种解决方法。
http://api.jquery.com/click/
【讨论】:
使用它来单击 jQuery ACF 字段上的下一个选项卡: $('.next').click(function () $('#primary li.active').next().find ('.acf-tab-button')[0].click(); ); 谢谢。它适用于桌面。但在移动设备(android chrome)上却没有。有什么建议吗? 由于某种原因,这会破坏当前 URL 中的哈希值。 如果 这似乎不再起作用(在 Safari、Firefox 上测试)【参考方案8】:这是 JQuery 行为。我不知道为什么会这样,它只会触发链接上的 onClick 函数。
试试:
jQuery(document).ready(function()
jQuery('#foo').on('click', function()
jQuery('#bar')[0].click();
);
);
【讨论】:
一点也不刺激。trigger()
旨在执行点击事件 JavaScript 部分。这与创建多次重复使用的function var()
非常相似。【参考方案9】:
查看我的演示:http://jsfiddle.net/8AVau/1/
jQuery(document).ready(function()
jQuery('#foo').on('click', function()
jQuery('#bar').simulateClick('click');
);
);
jQuery.fn.simulateClick = function()
return this.each(function()
if('createEvent' in document)
var doc = this.ownerDocument,
evt = doc.createEvent('MouseEvents');
evt.initMouseEvent('click', true, true, doc.defaultView, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
this.dispatchEvent(evt);
else
this.click(); // IE Boss!
);
【讨论】:
我会将this.click();
包裹在else if(this.click)
中
为什么要将字符串'click'
传递给simulateClick
函数?好像没用过。
@clayRay - 是的,我同意你的看法。它是多年前制作的,记住要根据参数进行动态化。但后来我只是试图做出当前需求的解决方案。感谢您的观察。【参考方案10】:
jQuery 的.trigger('click');
只会在这个事件上触发一个事件,它也不会触发默认的浏览器动作。
您可以使用以下 JavaScript 模拟相同的功能:
jQuery('#foo').on('click', function()
var bar = jQuery('#bar');
var href = bar.attr('href');
if(bar.attr("target") === "_blank")
window.open(href);
else
window.location = href;
);
【讨论】:
【参考方案11】:您无法使用 javascript 模拟点击事件。
jQuery .trigger()
函数只会在元素上触发一个名为“click”的事件,您可以使用 .on()
jQuery 方法捕获该事件。
【讨论】:
“你不能用javascript模拟点击事件” - Yes you can. 错了……你可以用javascript/jquery模拟点击事件,你可以用.click捕获触发点击事件而不用。以上是关于jquery trigger('mouseenter')在tampermonkey中无效的主要内容,如果未能解决你的问题,请参考以下文章
jquery中,.trigger('click');事件和.click();的应用是否同一个道理?
jquery中radio元素的trigger("change")不能触发的问题