如何获得Greasemonkey的点击,只有延迟后会出现一个按钮? [英] How do I get Greasemonkey to click on a button that only appears after a delay?

查看:189
本文介绍了如何获得Greasemonkey的点击,只有延迟后会出现一个按钮?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我见过很多类似的问题,我已经试过所有我能想到的得到这个对我自己的工作。

首先,有关code(¿从目标页面):

 的document.getElementById('btn_submit')。innerHTML的=
 '<输入类型=隐藏值=17271NAME =idofclick>
  <输入类型=提交值=点击我吧!NAME =submit_com级=padding2>';

基本上没有在页面上定时器和点击我吧!经过3秒按钮出现,这就是我想要点击的部分。

这是我的code。它不工作:

  // == == UserScript
// @name ABC
// @namespace东西
// @description ABC指令码
// @include *
// @version 1
// == / UserScript ==
(函数ClicktheButton(OBJ){
   变种EVT = document.createEvent(MouseEvents);
   evt.initMouseEvent(点击,真实的,真实的,窗口,
   0,0,0,0,0,假的,假的,假的,假的,0,NULL);
   VAR取消= obj.dispatchEvent(EVT)!;
   / *  如果(取消){
    //处理程序称为preventDefault
    警报(取消);
  }其他{
    //处理程序中没有所谓的preventDefault
    警报(不取消);
  }
  * /
}VAR StupidButton = document.querySelector.innerHTML('输入[类型=提交] [值=点击我吧!]');
ClicktheButton(StupidButton);


解决方案

这code有错误。使用Firefox的错误控制台(<大骨节病>控制 <大骨节病>移 <大骨节病>Ĵ)看到他们。使用 JSLint的来检查你的code,可也有帮助。

无论如何,这是一种常见的Greasemonkey的问题。使用的waitForKeyElements()实用程序来处理按钮的外观延迟。使用 jQuery的简化code(并使其更加坚固和便​​携)。

所以,你的脚本将变成:

  // == == 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 ==
/ * - 需要@grant指令来解决设计变更
    通用汽车1.0引入的。它恢复沙箱。
* /功能clickSubmitBtnWhenItAppears(jNode){
    变种clickEvent = document.createEvent('MouseEvents');
    clickEvent.initEvent('点击',真正的,真实的);
    jNode [0] .dispatchEvent(clickEvent);
}// - 值相匹配是大小写敏感的
waitForKeyElements(
    //#btn_submit输入[类型=提交] [*值='请点击我现在'],
    输入[类型=提交] [*值='请点击我现在'],
    clickSubmitBtnWhenItAppears
);

I've seen a lot of similar questions and I've tried everything I can think of to get this to work on my own.

First the relevant code (¿from the target page?):

document.getElementById('btn_submit').innerHTML =
 '<input type="hidden" value="17271" name="idofclick">
  <input type="submit" value=" Click Me Now! " name="submit_com" class="padding2">';

Basically there is a timer on the page and the "click me now!" button appears after 3 secs, that's the part I want to click on.

This is my code. It's not working:

// ==UserScript==
// @name        abc
// @namespace   something
// @description abc Scripty
// @include     *
// @version     1
// ==/UserScript==
(function ClicktheButton(obj) {
   var evt = document.createEvent("MouseEvents");
   evt.initMouseEvent("click", true, true, window,
   0, 0, 0, 0, 0, false, false, false, false, 0, null);
   var canceled = !obj.dispatchEvent(evt);
   /*

  if(canceled) {
    // A handler called preventDefault
    alert("canceled");
  } else {
    // None of the handlers called preventDefault
    alert("not canceled");
  }
  */
}

var StupidButton = document.querySelector.innerHTML('input[type="submit"][value=" Click Me Now! "]');
ClicktheButton(StupidButton);

解决方案

That code has errors. Use Firefox's error console (CtrlShiftJ) to see them. Using jslint to check your code, can be helpful too.

Anyway, this is a common Greasemonkey problem. Use the waitForKeyElements() utility to handle the delayed appearance of that button. Use jQuery to simplify the code (and make it more robust and portable).

So your script would become:

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

这篇关于如何获得Greasemonkey的点击,只有延迟后会出现一个按钮?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆