2015-12-13 51 views
1

我想自動點擊網頁上的切換鏈接。我無法修改其他用戶腳本,因爲此網頁似乎以不同的方式切換。如何在網頁上切換此鏈接?

網頁爲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> 

我嘗試了一些another Stack Overflow question的方法,但無法讓它們工作。

+1

$( '一[標題= 「菜單的切換顯示」]')點擊()。 –

回答

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