AtCoder Crouch Start

Add a link to problem A on upcoming AtCoder contest pages

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name            AtCoder Crouch Start
// @name:ja         AtCoder Crouch Start
// @namespace       https://github.com/xe-o
// @version         0.2
// @description     Add a link to problem A on upcoming AtCoder contest pages
// @description:ja  AtCoderの開始前のコンテストページにA問題へのリンクを追加します
// @author          XERO
// @license         MIT
// @match           https://atcoder.jp/contests/*
// @exclude         https://atcoder.jp/contests/
// @grant           none
// ==/UserScript==

(function () {
  "use strict";

  const fixtime = document.querySelector(".fixtime-full");
  const navTabs = document.querySelector(".nav.nav-tabs");
  const pullRightListItem = document.querySelector("li.pull-right");

  if (fixtime && Date.parse(fixtime.innerText) > Date.now()) {
    const contestID = window.location.pathname.split("/")[2];
    const tab = document.createElement("li");
    tab.innerHTML = `<a href="/contests/${contestID}/tasks/${contestID}_a"><span class="glyphicon glyphicon-paperclip" style="margin-right:4px;" aria-hidden="true"></span>A問題</a>`;
    navTabs.insertBefore(tab, pullRightListItem);
  }
})();