您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Syntax highlights <code> boxes on the powder toy forums.
- // ==UserScript==
- // @name TPT Syntax Highlighted Code Boxes
- // @version 1.3.0
- // @description Syntax highlights <code> boxes on the powder toy forums.
- // @author boxmein
- // @match *://powdertoy.co.uk/Discussions/Thread/*
- // @namespace http://boxmein.net
- // ==/UserScript==
- // last updated: Tue Dec 02 2014 21:16:57 GMT+0200 (FLE Standard Time)
- /*
- Note to moderators / anyone interested:
- =====
- The following libraries are served off of a well-known provider of Javascript
- libraries called [cdnjs][1], which happens to be in your whitelist of usable
- CDNs.
- I have refrained from using @require in the script manifest in order to fully
- support Google Chrome, a browser used by more than half of Internet users [(StatCounter Oct 2014)][2].
- This is a [known issue][3] which means that @require support has been willingly
- left out of Chrome. I hope that this is more than enough reasons to 'break' the
- rules of having to use @require.
- ~boxmein
- [1]: http://cdnjs.cloudflare.com
- [2]: http://gs.statcounter.com/#desktop-browser-ww-monthly-201410-201410-bar
- [3]: http://www.chromium.org/developers/design-documents/user-scripts
- */
- // Highlight.js is the highlighting library.
- var HLJS = "//cdnjs.cloudflare.com/ajax/libs/highlight.js/8.4/highlight.min.js";
- // Language support for Lua isn't included in ^that distribution by default
- var LUA = "//cdnjs.cloudflare.com/ajax/libs/highlight.js/8.4/languages/lua.min.js";
- // Highlight.js only slaps on class names, you also need to style the classes!
- var HL_STYLE = "//cdnjs.cloudflare.com/ajax/libs/highlight.js/8.4/styles/github.min.css";
- (function() {
- 'use strict';
- // Don't run inside iframes (Looking at you GreaseMonkey + TinyMCE)
- if (window.top !== window.self) return;
- // Runs a function in the document. Basically like a Content Script.
- // http://wiki.greasespot.net/Content_Script_Injection
- 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);
- }
- // Given a src attribute, makes a <script> tag into the end of <body>
- function contentScript(source) {
- var tag = document.createElement('script');
- tag.setAttribute('type', 'application/javascript');
- tag.src = source;
- document.body.appendChild(tag);
- //document.body.removeChild(tag);
- return tag;
- }
- var hl = contentScript(HLJS);
- hl.onload = function() {
- // Set an ID, because after *that* loads, hljs is finally ready to highlight
- // Lua as well as C++.
- var lu = contentScript(LUA);
- lu.id = "luaapi";
- // Add the CSS for good measure too
- var st = document.createElement('link');
- st.type = 'text/css';
- st.rel = 'stylesheet';
- st.href = HL_STYLE;
- document.head.appendChild(st);
- contentEval(function() {
- hljs.configure({useBR: true});
- function highlightCode(){
- // by default hljs highlights <pre><code>, have to override
- var ds = document.querySelectorAll('code');
- for(var d = 0; d < ds.length; d++)
- window.hljs.highlightBlock(ds[d]);
- }
- window.highlightCode = highlightCode;
- document.getElementById('luaapi').onload = highlightCode;
- });
- };
- })();