我想使用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中作为点击按钮的第一个参数?
答案 0 :(得分:2)
我想知道下面的代码是否是你想要的。
document.querySelector('#buy-now').click()
在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)