jquery - 单击按钮的用户脚本

标签 jquery greasemonkey userscripts

我想使用greasemonkey 单击“立即购买”按钮。

// ==UserScript==
// @name        script
// @namespace   sc
// @include     *
// @version     1
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @require  https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant    GM_addStyle
// ==/UserScript==

waitForKeyElements ("#buy-now", triggerMostButtons);

function triggerMostButtons (jNode) {
    triggerMouseEvent (jNode[0], "mouseover");
    triggerMouseEvent (jNode[0], "mousedown");
    triggerMouseEvent (jNode[0], "click");
    triggerMouseEvent (jNode[0], "mouseup");
}

function triggerMouseEvent (node, eventType) {
    var clickEvent = document.createEvent('MouseEvents');
    clickEvent.initEvent (eventType, true, true);
    node.dispatchEvent (clickEvent);
}

按钮的 HTML:

<div class="buy-now"><a data-spm-anchor-id="0.0.0.0" data-widget-cid="widget-14" tabindex="-1" id="buy-now" class="buy-now-btn" href="#">Buy Now</a><a id="add-to-cart" class="add-to-cart-btn" href="#">Add to Cart</a></div>

我尝试过其他代码,例如

var TargetLink          = $("a:contains('Ik neem er een!')")
if (TargetLink.length)
    window.location.assign (TargetLink[0].href);

waitForKeyElements ("a.class:contains('buy-now-btn')", clickOnFollowButton);

function clickOnFollowButton (jNode) {
    var clickEvent  = document.createEvent ('MouseEvents');
    clickEvent.initEvent ('click', true, true);
    jNode[0].dispatchEvent (clickEvent);
}

有人能给我解释一下在 waitForKeyElements 中放入什么作为单击按钮的第一个参数吗?

最佳答案

我想知道下面的代码是否是您想要的。

document.querySelector('#buy-now').click()

Demo

the page you mentioned 上似乎有些脚本尚未加载在 DOMContentLoaded 时。添加延迟解决了我的问题,即

// ==UserScript==
// @name         script
// @namespace    sc
// @include      http://www.aliexpress.com/item/Free-shipping-100-Genuine-Original-P1000-Mobile-phone-data-cable-for-Samsung-P1000-P6800-P7500-USB/1477114758.html
// @version      1
// @description  http://stackoverflow.com/questions/22633509/userscript-to-click-button/22684724
// @grant        none
// ==/UserScript==
setTimeout(function() {
    document.querySelector('#buy-now').click()
}, 1000)

关于jquery - 单击按钮的用户脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22633509/

相关文章:

javascript - 如何使用 Greasemonkey 阻止删除或停止 jquery 中的匿名函数

javascript - 使用 TamperMonkey 单击 YouTube 上的 "Show more..."按钮的用户脚本

javascript - 为什么这个 "vertical-align:bottom"的div的子元素在淡出之前移动到页面中间?

javascript - JS自动滚动

javascript - 谷歌地图和油脂猴内的范围

javascript - 保留用户脚本中设置的变量

javascript - 使用用户脚本单击表中的 td

javascript - 如何通过 jQuery 发送选定的元素和文本输入

jquery - 使用 jQuery 从背景图像获取尺寸

jquery - 使用 jQuery 单击按钮加载 Google map