繁体   English   中英

从控制台使用jQuery模拟用户单击锚标记

[英]Simulate user click on anchor tag with jQuery from console

我试图模拟用户单击按钮(从控制台),但无法进行任何操作。

首先,访问chegg.com (使用Chrome)。 接下来,检查页面元素并切换设备,以打开Chrome的移动设备模拟器(我们需要移动网站)。

我想使用jQuery单击汉堡包菜单(三行堆叠),但是我在控制台中输入的内容均无法执行此操作(该解决方案必须在控制台中工作) 该元素如下所示:

<a href="javascript:;" title="More ..." class="nav icon More">Navigate</a>

最初我以为href="javascript:;" 这就是造成问题的原因(我意识到通常不应该这样,但是我正在抓住稻草),但是经过一些测试之后,情况似乎并非如此。

我尝试了以下方法:

$('a.nav.icon.More').click()
$('a.nav.icon.More')[0].click()
$('a.nav.icon.More').trigger() // returns error
$('a.nav.icon.More').mousedown()

如果事件侦听器附加到其中的一个上,但我也尝试过单击parents元素,但无济于事。 谁能指出我正确的方向?

<div class="more-item nav-item active">
    <div class="header">More <span class="arrow-down"></span></div>
    <div class="carrot">
        <div class="carrot-inner"></div>
    </div>
    <div class="more-hover-content hover-box">
        <ul>
            <li><a href="http://www.chegg.com/signup/?redirect=http%3A%2F%2Fwww.chegg.com%2F" class="track-signup">Create an account</a></li>
            <li><a href="http://www.chegg.com/login/?redirect=http%3A%2F%2Fwww.chegg.com%2F" class="track-signin hide-initially">Sign in</a></li>
            <li><a href="http://www.chegg.com/login/?redirect=/my/account/returnbooks" class="track-returnbooks" data-noajax="">Return your books</a></li>
            <li><a href="http://www.chegg.com/sell-textbooks" class="track-selltextbooks" data-noajax="">Sell your books</a></li>
            <li><a href="http://www.chegg.com/contactus" class="track-help" data-noajax="">Help</a></li>
        </ul>
    </div

您必须调用“点击容器标签”

尝试这个

$(".more-item.nav-item").click()

这确实是一个奇怪的问题。 正如您所注意到的,所有通常的点击方式均无效。 我对这里发布的“答案”感到惊讶,因为从尝试这些答案显然可以看出,这些答案都不适合您所链接的网站。

查看源代码,似乎网站的JS以非传统方式对事件绑定进行了一些奇怪的操作(例如,将show / hide菜单事件绑定到ns.CLICK事件上的hamburger ,而不是传统的click事件上) )。 每当我单击并重新单击菜单时,浏览器的前进和后退按钮也会更改,这也很奇怪,这使我觉得实现路由和历史记录的方式有些奇怪。

因此,您不会发疯:)我想不出一种简单的方法来触发对网站的单击,但是从JS中,我们还可以看到click事件等效于从ExtendedNav切换hidden类。 因此,如果您希望获得与单击相同的操作,则可以调用$('.ExtendedNav').toggleClass('hidden')

触发器是最好的选择之一。 但是,您应该将事件作为参数传递:

$('a.nav.icon.More').trigger('click');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM