您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
Turns URL patterns in pastebin pages into actual links. (see code for examples)
您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
- // ==UserScript==
- // @id pastebin-linkize
- // @name pastebin link formatter
- // @version 1.0
- // @namespace hax
- // @author
- // @description Turns URL patterns in pastebin pages into actual links. (see code for examples)
- // @include http://pastebin.com/*
- // @run-at document-end
- // ==/UserScript==
- /*
- syntax: <contents> link (on one line)
- => <a href="link">contents</a>
- ommitting [] will make
- => <a href="link">link</a>
- -<contents> link (to leave the text plain)
- => <contents> link
- contents may not include right angle brackets or % by itself.
- (is unescaped though so %3e will become > and %25 will become %)
- (and %51 will become Q if you don't want to type Q for some reason)
- examples:
- ---<reddit>https://reddit.com/
- => --<reddit> https://reddit.com/
- => -<reddit> https://reddit.com/
- => <reddit> https://reddit.com/
- -<hell> http://4chan.us/
- => <hell> http://4chan.us/
- --https://github.com/
- => -https://github.com/
- -<meetup> http://meetup.com
- => <meetup> http://meetup.com
- -<no site %3e this one> https://pastebin.com
- => <no site %3e this one> https://pastebin.com/
- */
- var urlpatt = new RegExp('(-)?(?:<([^>]*)>\\s*)?(https?://[^ ]+)','g');
- function reformatOne(t) {
- var pieces = t.nodeValue.split(urlpatt);
- if(pieces.length == 1) {
- return 0;
- }
- var lastTextNode = null;
- function addtext(text) {
- console.log('add '+text);
- if(!text) return;
- if(lastTextNode==null) {
- lastTextNode = document.createTextNode(text);
- t.parentNode.insertBefore(lastTextNode,t);
- } else {
- lastTextNode.nodeValue += text;
- }
- }
- var islink = false;
- var i;
- console.log('pieces');
- console.log(t.nodeValue);
- console.log(pieces);
- for(i=0; i < pieces.length; ++i) {
- var piece = pieces[i];
- if(islink) {
- // a ()? capture returns undefined instead of omitting the capture
- var skip = piece;
- var contents = pieces[++i];
- var href = pieces[++i];
- if(skip) {
- if(contents == undefined)
- contents = href;
- else
- contents = '<' + contents + '> ' + href;
- addtext(contents);
- islink = false;
- continue;
- }
- if(contents == undefined) {
- contents = href;
- } else {
- contents = unescape(contents);
- }
- var link = document.createElement('a');
- link.setAttribute('href',href);
- link.appendChild(document.createTextNode(contents));
- t.parentNode.insertBefore(link,t);
- lastTextNode = null;
- islink = false;
- } else {
- addtext(piece);
- islink = true;
- }
- }
- t.parentNode.removeChild(t);
- return i + 1;
- }
- function reformat(e) {
- if (e.nodeValue) {
- reformatOne(e);
- } else if(e.childNodes.length > 0) {
- // do NOT iterate and SAVE the next step
- // otherwise we descend into the links we created!
- var cur = e.childNodes[0];
- while(cur) {
- var next = cur.nextSibling;
- reformat(cur);
- cur = next;
- }
- }
- }
- var div = document.getElementById('selectable');
- if(div)
- reformat(div);