IMGSCAN.JS + :hover
by
asiamoth
2011-12-13 [2011/12/13 18:52:11]
画像へのリンクにサムネイルを付加・マウスを載せると原寸で表示
-
/*
* @title IMGSCAN.JS + :hover
* @description 画像へのリンクにサムネイルを付加・マウスを載せると原寸で表示
* @include
* @license
* @require
*/
/*
* IMGSCAN.JS - Copyright (C) 2011.6.20 AOK.
* http://homepage3.nifty.com/aokura/jscript/imgscan.html
*/
(function() {
var b = /ime\.st\/|ime\.nu\/|pinktower\.com\/\?*|http:\/\/nun\.nu\/\?/g;
var c = /.+\.(?:gif|jpg|png|jpeg|bmp)$/i;
var d = /(^|[^a-z])(h?t)?(tps?:\/\/[!#-;=?-Z_a-z~]+)/gm;
var x = /\x1f(https?:\/\/[!#-;=?-Z_a-z~]+)/gm;
// add styles @asiamoth
var styles = document.createElement('style');
styles.type = 'text/css';
styles.innerHTML = [ '.imgscan:hover{',
'position: absolute !important;',
'width: auto !important;',
'height: auto !important; }'].join('');
document.getElementsByTagName("head")[0].appendChild(styles);
var urlscan = function(n) {
if ((!n.parentNode || n.parentNode.tagName != 'A') && n.nodeType == 3) {
n.nodeValue = n.nodeValue.replace(d, '$1\x1fht$3');
}
for (var i = 0; i < n.childNodes.length; i++) {
urlscan(n.childNodes[i]);
}
};
var imgscan = function(w) {
var a = w.document.getElementsByTagName('A');
for (var i = 0; i < a.length; i++) {
if (c.test(a[i].href)) {
var e = a[i].href.replace(b, '');
a[i].href = e;
a[i].target = '_blank';
// add class @asiamoth
a[i].innerHTML = '<img class="imgscan" src="' + e + '" width="75" height="75" />';
}
}
};
var framescan = function(w) {
if (w.document) {
var e = w.document.body;
urlscan(e);
e.innerHTML = e.innerHTML.replace(x,'<a href="$1" target="_blank">$1</a>');
imgscan(w);
}
var f = w.frames;
if (f) {
for (var i = 0; i < f.length; i++) {
try { framescan(f[i]); } catch(e) {}
}
}
};
framescan(window);
})();
-
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。