Rya*_*Dad 2 javascript greasemonkey click reload
我是JavaScript的初学者.我需要知道这是否可行然后如果可行,该怎么做.
我想创建一个Greasemonkey脚本,它会每小时自动重新加载一个网页,然后在重新加载页面后,我希望它为我点击一个按钮.
那可能吗?
点击内容,请参阅此答案.
由于按钮可以通过AJAX加载(需要更多信息),请参考该waitForKeyElements()实用程序,以处理AJAX延迟/修改.
开始学习jQuery ; 它会为你节省大量的悲伤和努力.
确定所需按钮的jQuery选择器.您可以使用像Firebug这样的工具来帮助解决这个问题(请注意,jQuery选择器和CSS选择器大致相同,但jQuery有更多选项/功能).
例如,如果页面的HTML有一个如下所示的部分:
<div id="content">
<p>Blah, blah, blather...</p>
<h2>Your available actions:</h2>
<button class="respBtn">Like</button>
<button class="respBtn">Hate</button>
<button id="bestOption" class="respBtn">Nuke them all</button>
</div>
Run Code Online (Sandbox Code Playgroud)
那么3个按钮的选择器可能(分别):
$("#content button.respBtn:contains('Like')");$("#content button.respBtn:contains('Hate')");$("#bestOption");(id如果元素有一个,请始终使用.)
总而言之,这是一个重新加载和点击的完整Greasemonkey脚本:
// ==UserScript==
// @name _Reload and click demo
// @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 major design
change introduced in GM 1.0.
It restores the sandbox.
*/
waitForKeyElements ("#bestOption", clickTargetButton);
function clickTargetButton (jNode) {
var clickEvent = document.createEvent ('MouseEvents');
clickEvent.initEvent ('click', true, true);
jNode[0].dispatchEvent (clickEvent);
}
//--- Reload after 1 hour (1000 * 60 * 60 milliseconds)
setTimeout (location.reload, 1000 * 60 * 60);
Run Code Online (Sandbox Code Playgroud)