如何在网页上切换此链接?

时间:2015-12-13 16:22:31

标签: javascript greasemonkey tampermonkey

我想自动点击网页上的切换链接。我无法修改其他用户脚本,因为此网页似乎以不同方式进行切换。

网页为anidb.net/perl-bin/animedb.pl?show=animelist,切换是一个按钮,在右侧栏中,"保存/加载设置" (如果您已登录,或者在#34;重置"旁边;如果您不是,则。)

以下HTML似乎是控制切换的原因。

<div class="g_menu filter_menu expanded">
    <h3>
        <a class="i_icon i_expanded" title="Toggle display of menu"></a>
    </h3>

我尝试了another Stack Overflow question中的一些方法,但无法让它们发挥作用。

1 个答案:

答案 0 :(得分:0)

通过javascript(jQuery)添加切换控件,因此您必须使用支持AJAX的技术来访问它。
请参阅Choosing and activating the right controls on an AJAX-driven site

您指明的链接有一个CSS类(i_expanded),它为waitForKeyElements()提供了一个很棒的选择器。 因此,该网站生成的完整脚本非常简单:

// ==UserScript==
// @name     aniDB, auto-close the sidebar menu
// @match    *://anidb.net/perl-bin/animedb*
// @require  http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/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.
*/
waitForKeyElements (
    ".filter_menu.expanded .i_expanded", clickNode, true
);

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