JSON でもいけるらしい
研究室の隣の席の T さんに,JSON というのを教えてもらった.これを使えば GM_ な関数がなくてもなんとかなるらしい.時間を見つけて調べてみることにしよう.
それと T さんに協力してもらって見た目よくした.やっぱりスタイルシートって難しい.
てかさっき気がついたけどソースを貼ってなかった.意味ない.すんごく汚いけどせっかくなので貼っておく.
// ==UserScript== // @name del.icio.us viewer // @author shimomura sho // @version 0.1 // @namespace http://www.agusa.i.is.nagoya-u.ac.jp/person/shimo/ // @published 2008/2/5 // @modified 2008/2/5 // @description : open and close bookmark bar by typing C-d // @include http://* // ==/UserScript== (function (){ var sitename = "http://del.icio.us"; var username = "username"; // <- your account name var delsearch; var searchfield = document.createElement("div"); searchfield.style.width = "100%"; searchfield.id = "searchfield"; var tagfield = document.createElement("div"); tagfield.style.width = "100%"; tagfield.id = "tags"; function createSearch() { delsearch = document.createElement('div'); delsearch.style.top = "0px"; delsearch.style.color="#FFFFFF"; delsearch.style.display="none"; delsearch.style.fontSize="14px"; delsearch.style.left="0px"; delsearch.style.overflow="auto"; delsearch.style.position="absolute"; delsearch.style.width="100%"; delsearch.style.zIndex="10000"; delsearch.style.position="fixed"; delsearch.style.backgroundImage= "url(http://www.agusa.i.is.nagoya-u.ac.jp/person/shimo/tip.png)"; delsearch.style.wordBreak="break-all"; delsearch.style.fontFamily= '"Times New Roman",Times,"ヒラギノ角ゴ Pro W3","MS Pゴシック",sans-serif'; delsearch.style.textAlign="left"; /* prepare textbox */ var tmp = document.createElement("a"); tmp.style.color = "white"; tmp.innerHTML = "Search Tag : "; searchfield.appendChild(tmp); var input = document.createElement("input"); input.style.border="solid 0 #fff"; input.style.margin="5px 5px 0px 0px"; input.style.height="20px"; input.style.width="200px"; input.style.background = "transparent "+ "url(http://www.agusa.i.is.nagoya-u.ac.jp/person/shimo/textfield_bg.gif) "+ "no-repeat"; input.style.type="text"; input.id = "filter_field"; searchfield.appendChild(input); delsearch.appendChild(searchfield); /* prepare post to delicious */ var tmp = document.createElement("a"); tmp.style.color = "white"; tmp.setAttribute("href", "javascript:location.href='http://del.icio.us/post?v=4;"+ "url='+encodeURIComponent(location.href)+';"+ "title='+encodeURIComponent(document.title.replace(/^\s*|\s*$/g,''))"); tmp.innerHTML = "Post to del.ico.us"; searchfield.appendChild(tmp); /* access to the delicious */ GM_xmlhttpRequest({ method: "GET", url: sitename+"/"+username+"/", onload: function(r) { var delicious = document.createElement("div"); delicious.innerHTML = r.responseText; var lis = delicious.getElementsByTagName("li"); var tags = new Array(lis.length); var j = 0; for ( i=0 ; i < lis.length ; i++ ) { if ( lis[i].parentNode.parentNode.className == "bundle fold" ) { var span = document.createElement("span"); var tmp = lis[i].firstChild; /* relative -> abusolute */ tmp.setAttribute("href",sitename+tmp.getAttribute("href")); if ( tmp.className == "ten" ) { tmp.style.fontSize = "110%"; tmp.style.color = "#ffffff"; tmp.style.display = "inline"; } else if ( tmp.className == "one") { tmp.style.fontSize = "90%"; tmp.style.color = "#aaaaaa"; tmp.style.display = "inline"; } else { tmp.style.color = "#dddddd"; tmp.style.display = "inline"; } span.appendChild(tmp); span.style.margin = "3px"; tags[j++] = span; } } for ( i=0 ; i < j ; i++ ) { tagfield.appendChild(tags[i]); tagfield.appendChild(document.createTextNode(" ")); } delsearch.appendChild(tagfield); }}) return delsearch; } /* show and hide search bar */ function showSearch(){ if (delsearch.style.display == "none") { delsearch.style.display = "block"; document.getElementById("filter_field").focus(); } else { delsearch.style.display = "none"; } } document.addEventListener('keyup', function(e){ // if '^d' is pushed if (e.keyCode == 68 && e.ctrlKey) { if (delsearch == undefined){ delsearch = createSearch(); document.body.appendChild(delsearch); } showSearch(); } else if ( delsearch != undefined && delsearch.style.display == "block" && !e.ctrlKey ) { var f = document.getElementById("filter_field").value; var len = f.length; var num = tagfield.childNodes.length; for ( i=0 ; i < num ; i+=2 ) { if ( tagfield.childNodes[i].tagName == "SPAN" ) { if(tagfield.childNodes[i].firstChild.textContent.indexOf(f) != -1) tagfield.childNodes[i].style.display = "inline"; else tagfield.childNodes[i].style.display = "none"; } } } }, false); })();