我想使用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()
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/