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

How to toggle this link on a webpage?

提问人:pball 提问时间:12/14/2015 最后编辑:Communitypball 更新时间:12/14/2015 访问量:79

问:

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

网页已 anidb.net/perl-bin/animedb.pl?show=animelist,切换开关是右侧列中“保存/加载设置”旁边的按钮(如果您已登录,则在“重置”旁边,如果您未登录)。

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

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

我尝试了另一个 Stack Overflow 问题中的一些方法,但无法让它们工作。

javascript greasemonkey tampermonkey

评论

1赞 Kit Fung 12/14/2015
$('a[title = “切换菜单的显示” ]').click()

答:

0赞 Brock Adams 12/14/2015 #1

该切换控件由 javascript (jQuery) 添加,因此必须使用 AJAX 感知技术才能访问它。
请参阅在 AJAX 驱动的站点上选择和激活正确的控件

您指出的链接有一个 CSS 类 (),该类是 . 因此,该站点生成的完整脚本很简单:i_expandedwaitForKeyElements()

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