index.html の書き換え云々、の部分は GM でやってしまえ。ということで。先頭の var base = の部分はご自分の環境に合わせて変えてください。
ただ、Jemplate.js (0.18に付属のもの) に以下の patch を当てないとループを回ってくれない。"No object to iterate" という例外が出る。
GM 内で動かす場合とそうでない場合で instanceOf の結果が違うのか?
@@ -625,6 +625,8 @@ object_keys[object_keys.length] = key; } this.object_keys = object_keys.sort(); + } else { + this.object = object; } } }
// ==UserScript== // @name hatenaTubeHack // @namespace http://d.hatena.ne.jp/sfujiwara/ // @include http://www.fladdict.net/app/hatenatube/* // ==/UserScript== (function() { var base = 'http://example.com/hatena-tube/'; function hatenaTubeHack () { var mainDiv = document.getElementById('main'); var div = mainDiv.childNodes; for(var i=0; i < div.length; i++){ if( div[i].className == 'video' ){ mainDiv.removeChild(div[i]); } } var container = document.createElement('div'); container.id = 'video_container'; mainDiv.appendChild(container); var container = document.getElementById('video_container'); container.innerHTML = 'loading...'; GM_xmlhttpRequest({ method: 'GET', url: base + 'data.js', onload: function(response) { var data = unsafeWindow.JSON.parse( response.responseText ); unsafeWindow.Jemplate.process('video.tmpl', data, '#video_container'); } }) } var head = document.getElementsByTagName('head')[0]; var scj = document.createElement('script'); scj.src = base + 'Jemplate.js'; head.appendChild(scj); var sct = document.createElement('script'); sct.src = base + 'video.tmpl.js'; head.appendChild(sct); window.addEventListener("load", hatenaTubeHack, false); })();