您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
george_plus
// ==UserScript== // @name george_script.js // @description george_plus // @namespace akash-ted-allen/george_plus // @version 1 // @match http://www.student.cs.uwaterloo.ca/~se212/george-1/ask-george/george.cgi // @match https://www.student.cs.uwaterloo.ca/~se212/george-1/ask-george/george.cgi // @grant GM_addStyle // ==/UserScript== /** * Created by Akash Sant, Ted Ying, Allen Wang on 14-11-21. */ GM_addStyle('.ace_editor{height:300px;} textarea[name=input_script] {height:0px;width:0px;left:-100px;top:-100px;position:absolute;}'); function contentEval(source) { // Check for function input. if ('function' == typeof source) { // Execute this function with no arguments, by adding parentheses. // One set around the function, required for valid syntax, and a // second empty set calls the surrounded function. source = '(' + source + ')();' } // Create a script node holding this source code. var script = document.createElement('script'); script.setAttribute("type", "application/javascript"); script.textContent = source; // Insert the script node into the page, so it will run, and immediately // remove it to clean up. document.body.appendChild(script); document.body.removeChild(script); } contentEval(function() { function loadScript(src, cb) { var scr = document.createElement('script'); scr.src = src; scr.onload = cb; document.body.appendChild(scr); } var inputs = document.getElementsByTagName('input'); var input_script = document.getElementsByName('input_script')[0]; var getCurrentValue = function() {}; for (var i = 0; i < inputs.length; ++i) inputs[i].addEventListener('click', function() { input_script.value = getCurrentValue(); }); var base = 'https://csclub.uwaterloo.ca/~t2ying/build/src/'; var urls = [ base + 'ace.js', base + 'ext-language_tools.js', ], loaded = 0; urls.map(function(url) { loadScript(url, function() { if (++loaded == urls.length) initialize(); }); }); function initialize() { var textarea = document.createElement('textarea'); textarea.innerHTML = input_script.innerHTML; input_script.parentNode.insertBefore(textarea, input_script); textarea.setAttribute('id', 'editor'); var editor = ace.edit('editor'); window.editor = editor; editor.setTheme('ace/theme/chrome'); editor.setBehavioursEnabled(true); editor.getSession().setMode('ace/mode/george'); getCurrentValue = function() { return editor.getValue(); }; editor.setOptions({ enableBasicAutocompletion : true, enableSnippets: true, enableLiveAutocompletion: true }); var headingPlus = document.createElement('font'); headingPlus.textContent = '\t+'; headingPlus.style.fontFaceName = 'fantasy'; headingPlus.style.color = '#000060'; var parentHeading = document.getElementsByClassName('title')[0]; parentHeading.appendChild(headingPlus); var loadFileButton = document.createElement('button'); var deleteFileButton = document.createElement('button'); loadFileButton.textContent = 'Load File'; deleteFileButton.textContent = 'Delete File'; //document.body.appendChild(loadFileButton); var parentGuest = document.getElementsByName('download_file_name')[0]; document.getElementsByName('clear')[0].addEventListener('click', onClear); if (parentGuest.nextSibling) { parentGuest.parentNode.insertBefore(loadFileButton, parentGuest.nextSibling); } else { parentGuest.parentNode.appendChild(loadFileButton); } loadFileButton.addEventListener('click', onLoadSaved); parentGuest = document.getElementsByName('filename')[0]; if (parentGuest.nextSibling) { parentGuest.parentNode.insertBefore(deleteFileButton, parentGuest.nextSibling); } else { parentGuest.parentNode.appendChild(deleteFileButton); } deleteFileButton.addEventListener('click', delete_saved); function save_george_progress () { if(typeof (Storage) !== "undefined") { localStorage.setItem(document.getElementsByName('download_file_name')[0].value, editor.getValue()); } } function getKey(){ return document.getElementsByName("download_file_name")[0].value; } function delete_saved (e) { if (e && e.preventDefault) e.preventDefault(); input_script.value = localStorage.getItem(getKey()); localStorage.removeItem(getKey()); } function onLoadSaved(e) { if (e && e.preventDefault) e.preventDefault(); var code = localStorage.getItem(getKey()); if (code !== null) setCode(code); } function onClear (e) { if (e && e.preventDefault) e.preventDefault(); setCode('#u X\n\n#a X\n\n#q X\n\n'); } function setCode(code) { input_script.value = code; editor.setValue(code); } document.getElementsByName('check')[0].addEventListener("click", save_george_progress); }; });