// ==UserScript== // @name 属性可視化クラス + Opera 用スクリプト // @author RAKUDA/FAR // @version 1.000 // @namespace http://far.usopion.com/ // ==/UserScript== (function() { /****************************************************************************************************/ /* 属性可視化クラス version 1.000 */ /* Copyright (c) 2001-2006 by FAR/RAKUDA */ /* All Rights Reserved */ /* Last Modified at 2006.11.10 */ /****************************************************************************************************/ // cite 属性をリンクに変換したり、 datetime 属性を title 属性に変換したりする。 // 2006.11.10 title 属性が表示されない要素の title 属性を、要素を span で囲むことによって表示させる。 function visibleAttribute(className) { cite = function(elementName,imageData) { var elements = document.getElementsByTagName(elementName); for(var i = 0,element;element = elements[i];i++) { if(element.hasAttribute('cite')) { var cite = element.getAttribute('cite'); var title = element.getAttribute('title') || cite; var a = document.createElement('a'); a.setAttribute('href',cite); a.setAttribute('title',title); a.setAttribute('class',this.className); var image = document.createElement('img'); image.setAttribute('src',imageData); image.setAttribute('alt','[cite]'); a.appendChild(image); element.appendChild(a); } } } datetime = function(elementName) { var elements = document.getElementsByTagName(elementName); for(var i = 0,element;element = elements[i];i++) { if(element.hasAttribute('datetime')) { var date = element.getAttribute('datetime'); var title = element.getAttribute('title'); element.setAttribute('title',title + ' update at ' + date); } } } title = function(elementName) { var elements = document.getElementsByTagName(elementName); for(var i = 0,element;element = elements[i];i++) { if(element.hasAttribute('title')) { var title = element.getAttribute('title'); var parent = element.parentElement; var span = document.createElement('span'); span.setAttribute('class',this.className); span.setAttribute('title',title); span.appendChild(element.cloneNode('true')); document.body.appendChild(span); parent.replaceChild(span,element); } } } // tabindex // accsesskey // target visibleAttribute.prototype.cite = cite; visibleAttribute.prototype.datetime = datetime; visibleAttribute.prototype.title = title; this.className = className || 'visibleattribute'; return this; } /****************************************************************************************************/ /* サンプルスクリプト */ //読み込み時に実行 document.addEventListener ('load', function() { var className = 'visibleattribute'; var vAttribute = new visibleAttribute(className); var imageData = 'data:image/gif;base64,'+ 'R0lGODlhCAAIAIcAAAAAAAAA//8AAP//AP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+ 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+ 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+ 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+ 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+ 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+ 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+ 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+ 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+ 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+ 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+ 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+ 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+ 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAQALAAAAAAIAAgA'+ 'AAgpAAkIBCCwYIAAAwgGIBBAAAGCDAUsLCjwIMWKEgcSyLgQwACLFCESCAgAOw=='; var Elements = new Array('blockquote','q','ins','del'); for(var i = 0,element;element = Elements[i];i++) { vAttribute.cite(element,imageData); } var Elements = new Array('ins','del'); for(var i = 0,element;element = Elements[i];i++) { vAttribute.datetime(element); } var Elements = new Array('ruby'); for(var i = 0,element;element = Elements[i];i++) { vAttribute.title(element); } },false ) })();