Javascript 如何让Greasemonkey单击一个仅在延迟后出现的按钮?

Javascript 如何让Greasemonkey单击一个仅在延迟后出现的按钮?,javascript,button,click,greasemonkey,tampermonkey,Javascript,Button,Click,Greasemonkey,Tampermonkey,我已经看到了很多类似的问题,我已经尝试了我能想到的一切,让我自己的工作 首先是相关代码(来自目标页面?): 那个代码有错误。使用Firefox的错误控制台(CtrlShiftJ)查看它们。使用检查您的代码,也会很有帮助 无论如何,这是一个常见的油腻问题。用于处理该按钮的延迟外观。用于简化代码(并使其更加健壮和可移植) 因此,您的脚本将变成: // ==UserScript== // @name _YOUR_NAME // @include http://YOUR_SERVER.COM/

我已经看到了很多类似的问题,我已经尝试了我能想到的一切,让我自己的工作

首先是相关代码(来自目标页面?):


那个代码有错误。使用Firefox的错误控制台(CtrlShiftJ)查看它们。使用检查您的代码,也会很有帮助

无论如何,这是一个常见的油腻问题。用于处理该按钮的延迟外观。用于简化代码(并使其更加健壮和可移植)

因此,您的脚本将变成:

// ==UserScript==
// @name     _YOUR_NAME
// @include  http://YOUR_SERVER.COM/YOUR_PATH/*
// @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==
/*- The @grant directive is needed to work around a design change
    introduced in GM 1.0.   It restores the sandbox.
*/

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

//-- Value match is case-sensitive
waitForKeyElements (
    //"#btn_submit input[type='submit'][value*='Click Me Now']",
    "input[type='submit'][value*='Click Me Now']",
    clickSubmitBtnWhenItAppears
);

那个代码有错误。使用Firefox的错误控制台(CtrlShiftJ)查看它们。使用检查您的代码,也会很有帮助

无论如何,这是一个常见的油腻问题。用于处理该按钮的延迟外观。用于简化代码(并使其更加健壮和可移植)

因此,您的脚本将变成:

// ==UserScript==
// @name     _YOUR_NAME
// @include  http://YOUR_SERVER.COM/YOUR_PATH/*
// @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==
/*- The @grant directive is needed to work around a design change
    introduced in GM 1.0.   It restores the sandbox.
*/

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

//-- Value match is case-sensitive
waitForKeyElements (
    //"#btn_submit input[type='submit'][value*='Click Me Now']",
    "input[type='submit'][value*='Click Me Now']",
    clickSubmitBtnWhenItAppears
);

嗯,这似乎也不起作用,是不是因为“现在点击我!”和“现在点击我!”之间有一个空格?不,不是这样。
值*=
运算符为。因此,只要
立即单击我
是准确的,它就会工作。尝试更新的代码,如果不起作用,发布id为
btn_submit
.hmm的元素的准确、未编辑的HTML。这似乎也不起作用,是因为“和现在单击我!”之间有空格吗?不,不是这样。
值*=
运算符为。因此,只要
立即单击我
是准确的,它就会工作。尝试更新的代码,如果不起作用,发布id为
btn\u submit
的元素的准确、未编辑的HTML。
// ==UserScript==
// @name     _YOUR_NAME
// @include  http://YOUR_SERVER.COM/YOUR_PATH/*
// @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==
/*- The @grant directive is needed to work around a design change
    introduced in GM 1.0.   It restores the sandbox.
*/

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

//-- Value match is case-sensitive
waitForKeyElements (
    //"#btn_submit input[type='submit'][value*='Click Me Now']",
    "input[type='submit'][value*='Click Me Now']",
    clickSubmitBtnWhenItAppears
);