一歩前進
昨日のエントリのグリモンですが、コールバック関数に引数を渡す方法がわからなくてエラーになってた件、対応できた。
http://eclipse.cspc.jp/さんとこのhttp://eclipse.cspc.jp/perma/000263/ってエントリが、自分のやりたい事と全く同じ事をされてたんで参考になりました。( ^ω^)
クロージャ?レキシカルスコープ?ってんでしょうか、ソースの意味はよく理解出来ていない(汗ものの、まずは思い通りの結果を得られたので一歩前進です。
ソース
// ==UserScript== // @name chiebukuroUsefulPointGetter // @namespace http://d.hatena.ne.jp/so_blue/ // @include http://my.chiebukuro.yahoo.co.jp/my/myspace_ansdetail.php* // ==/UserScript== (function(){ var xpath = '/descendant::div[@class=\'category\']'; var r = document.evaluate(xpath, document.body, null, 7, null); var re = new RegExp('\\d+', 'ig'); for (var i = 0, len = r.snapshotLength; i < len; i++) { if (r.snapshotItem(i).parentNode.getElementsByTagName('IMG')[0].alt == '\u89e3\u6c7a\u6e08\u307f') { var sURL = r.snapshotItem(i).parentNode.getElementsByTagName('A')[0].href.split('\*-')[1]; GM_xmlhttpRequest({ method: 'GET', url: sURL, onload: setUsefulPoint(i) }); } } function setUsefulPoint(nodeIndex) { return function(req) { var x = document.createElement('DIV'); x.innerHTML = req.responseText; var t = x.getElementsByClassName('useful')[0].getElementsByTagName('P')[0].textContent; var s = t.split('\u4eba\u4e2d'); var s1 = s[0].match(re).join(''); var s2 = s[1].match(re).join(''); s = ' ' + s2 + ' / ' + s1; var elmSPAN = document.createElement('SPAN'); elmSPAN.style.fontSize = 'small'; elmSPAN.textContent = s; r.snapshotItem(nodeIndex).appendChild(elmSPAN); } } })();
まだ対応しないといけない点
知恵袋のページってAutoPagerizeに対応されてるんで、AutoPagerizeで追加表示されたページにもこいつが適用される様にしないと駄目ですね。