您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Wraps links with specified protocols in <a> tags.
- // ==UserScript==
- // @name Link Wrapper
- // @author TM
- // @namespace https://trap.jp/
- // @version 0.1
- // @description Wraps links with specified protocols in <a> tags.
- // @match *://*/*
- // @grant none
- // @license MIT
- // ==/UserScript==
- (function() {
- 'use strict';
- var regexp_url = /((h?)(ttps?:\/\/[a-zA-Z0-9.\-_@:/~?%&;=+#',()*!]+))/g;
- var wrapLink = function(all, url, h, href) {
- return '<a href="h' + href + '" target="_blank">' + url + '</a><br/>';
- }
- /**
- * 渡されるコンテンツ:
- * - <div>hoge<div>...<div>fuga</div>
- * <div>hogefuga</div>
- */
- function wrapLinks(element) {
- var textContent = "";
- if(element.nodeType === 3) {
- textContent = element.textContent;
- }
- else{
- for(var elem of element.childNodes){
- console.log(elem);
- console.log(elem.nodeType);
- if(elem.nodeType === 3) {
- textContent += elem.textContent;
- }
- }
- }
- if (textContent) {
- var newTextContent = textContent.replace(regexp_url, wrapLink);
- if (newTextContent !== textContent) {
- element.innerHTML = newTextContent;
- }
- }
- }
- function traverseAndWrap(element) {
- if(element.tagName === "A" || element.tagName === "STYLE" || element.tagName === "SCRIPT"){
- return;
- }
- if (element.childNodes.length === 1) {
- console.log(element);
- wrapLinks(element);
- }
- for (var i = 0; i < element.childNodes.length; i++) {
- var childNode = element.childNodes[i];
- if (childNode.nodeType === 1) {
- traverseAndWrap(childNode);
- }
- }
- }
- window.addEventListener('load', function() {
- traverseAndWrap(document.body);
- });
- })();