您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
modを取る必要がありそうだったら教えてくれます!嬉しいね(うれしいので) ソースコード内で通知位置の設定が可能です!
当前为
// ==UserScript== // @name mod noticer // @namespace http://atcoder.jp/ // @version 2.0 // @description modを取る必要がありそうだったら教えてくれます!嬉しいね(うれしいので) ソースコード内で通知位置の設定が可能です! // @author Ll_e_ki // @match https://atcoder.jp/contests/*/tasks/* // @grant none // ==/UserScript== (function() { 'use strict'; // Your code here... const IN_SUBMIT = 0b001 const ABOVE_SUBMIT = 0b010 const DIALOG = 0b100 const NOTICE_POSITION = IN_SUBMIT | ABOVE_SUBMIT | DIALOG // IN_SUBMIT = 提出ボタン内 // ABOVE_SUBMIT = 提出ボタンの上 // DIALOG = 提出時、提出コードでmodを取り忘れている場合ダイアログ表示 // 組み合わせることも可能です(例:AROUND_SUBMIT||DIALOG = 提出ボタンの上と提出時のダイアログで通知) const MODMARK = [ // ダイアログ表示を使用する場合、modを取っているかの確認用文言を予め入力してください "%" ] const MOD_LIST = ["割ったあまり", "割った余り", "答えは非常に大きく", "mod"] function inWord(root_element, word_list) { let elem_stack = [root_element] while (elem_stack.length > 0) { var element = elem_stack.pop() for (var i = 0; i < word_list.length; i++) { if (element.textContent.match(word_list[i])) { return true } } if (element.children.length > 0) { var children = element.children for (var i = 0; i < children.length; i++) { elem_stack.push(children[i]) } } } return false } let task_element = document.getElementById("task-statement") let global_needmod = inWord(task_element, MOD_LIST) if (global_needmod) { if (NOTICE_POSITION & IN_SUBMIT) { document.getElementById("submit").appendChild(document.createElement("br")) document.getElementById("submit").appendChild(document.createTextNode("※ modは取りましたか?")) } if (NOTICE_POSITION & ABOVE_SUBMIT) { var append_elem = document.createElement("b") append_elem.textContent = "※ modは取りましたか?" document.getElementById("sourceCode").appendChild(append_elem) } } document.getElementById("submit").addEventListener("click", (event) => { if (NOTICE_POSITION & NOTICE_POSITION && global_needmod) { let code_element = document.getElementById("sourceCode") if (inWord(code_element, MODMARK) == false && confirm("modを取っていない可能性があります。提出しますか?") == false) { event.preventDefault() } } }) })()