用户脚本点击按钮

时间:2014-03-25 11:41:15

标签: 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);
}

有人可以给我一个explenation什么放在waitForKeyElements中作为点击按钮的第一个参数?

1 个答案:

答案 0 :(得分:2)

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

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

Demo

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

// ==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)