使用Greasemonkey脚本在一个页面中单击多个链接?

时间:2013-06-05 14:28:42

标签: javascript hyperlink greasemonkey

我是3个网站的管理员,我的工作是删除不需要的项目,通常点击标有“删除”的每个项目。我想自动化这个过程。试图使用一些自动化程序(宏录像机),但它们是静态的。

我不是Greasemonkey程序员,如果有人能给我一个关于从哪里开始的想法,我会很感激,

网址格式:

<a class="delete" href="http://www.domain.com/#!/item/delete/{id}">Delete</a>

如果有class="delete",我想点击删除链接。

每个页面包含20个链接。

单击“删除”链接时,页面不会刷新,jQuery。

2 个答案:

答案 0 :(得分:2)

var all = document.getElementsByClassName("delete");
for(var i=0; i<all.length; i++) {
    var deleteUrl = all[i].href;
    var ifr = document.createElement("IFRAME");
    document.body.appendChild(ifr);
    ifr.src = deleteUrl;
}

您可以在浏览器的JavaScript控制台中运行如上所述的简单脚本,或将其设置为书签。

答案 1 :(得分:0)

另见"How to make Greasemonkey click lots of links one by one?"

由于每个“删除”按钮都会打开一个新页面,因此直接点击将从当前页面导航。因此,请改为打开<iframe>中的链接。

使用jQuery使其更容易,更健壮。以下是完整脚本 ...

对于简单的静态页面:

// ==UserScript==
// @name     _Fire lots of delete buttons
// @include  http://YOUR_SERVER.COM/YOUR_PATH/*
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
// @grant    GM_addStyle
// ==/UserScript==

var deleteLinks = $("a.delete");

deleteLinks.each ( function () {
    if (this.href) {
        $("body").append (
            '<iframe class="gmDelIfr" src="' + this.href + '"></iframe>'
        );
    }
} );

//-- Use whatever CSS you desire. Like `display: none;`, for example.
GM_addStyle ( "                                 \
    iframe.gmDelIfr {                           \
        width:                  80%;            \
        height:                 2em;            \
        margin:                 0;              \
        padding:                0;              \
    }                                           \
" );


对于AJAX驱动的页面:(也适用于静态页面)

// ==UserScript==
// @name     _Fire lots of delete buttons
// @include  http://YOUR_SERVER.COM/YOUR_PATH/*
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
// @require  https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant    GM_addStyle
// ==/UserScript==

waitForKeyElements ("a.delete", clickDeleteLink);

function clickDeleteLink (jNode) {
    var thisHref    = jNode[0].href;
    if (thisHref) {
        $("body").append (
            '<iframe class="gmDelIfr" src="' + thisHref + '"></iframe>'
        );
    }
}

//-- Use whatever CSS you desire. Like `display: none;`, for example.
GM_addStyle ( "                                 \
    iframe.gmDelIfr {                           \
        width:                  80%;            \
        height:                 2em;            \
        margin:                 0;              \
        padding:                0;              \
    }                                           \
" );