您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Atcoderのアコーディオンメニューを、マウスのホバーで開けるようにします
当前为
您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
- // ==UserScript==
- // @name Atcoder Easy Accordion
- // @namespace http://tampermonkey.net/
- // @version 1.2
- // @description Atcoderのアコーディオンメニューを、マウスのホバーで開けるようにします
- // @author Rac
- // @license MIT
- // @match https://atcoder.jp/*
- // @exclude /^https://atcoder\.jp/[^#?]*/json/
- // @grant none
- // ==/UserScript==
- (function() {
- 'use strict';
- if(document.getElementsByClassName("header-mypage_btn").length != 0) {
- window.scrollTo=()=>{};
- }
- document.querySelectorAll(".nav > li:not(.pull-right)").forEach((element) => {
- element.addEventListener("mouseenter", () => {
- setTimeout(() => {
- element.classList.add("open");
- }, 10);
- });
- element.addEventListener("mouseleave", () => {
- element.classList.remove("open");
- });
- });
- {
- const element = document.getElementsByClassName("header-mypage_btn")[0];
- const element_ac = document.getElementsByClassName("header-mypage_detail")[0];
- if(element && element_ac) {
- let flag1 = false;
- let flag2 = false;
- element.addEventListener("mouseenter", () => {
- flag2 = false;
- if(!element.classList.contains("active")) {
- setTimeout(() => {
- if(!element.classList.contains("active")) element.click();
- }, 10);
- }
- });
- element.addEventListener("mouseleave", () => {
- flag1 = true;
- setTimeout(() => {
- if(flag1 && element.classList.contains("active")) element.click();
- }, 10);
- });
- element_ac.addEventListener("mouseenter", () => {
- flag1 = false;
- if(!element.classList.contains("active")) element.click();
- });
- element_ac.addEventListener("mouseleave", () => {
- flag2 = true;
- setTimeout(() => {
- if(flag2 && element.classList.contains("active")) element.click();
- }, 10);
- });
- }
- }
- })();