2008年08月02日
javascriptでAmazonアソシエイト!
なんか発掘したので張ってみる。
(function(){ // 配列コピー Array.prototype.clone = function(){ return Array.apply(null,this); } var oNkii = window.oNkii = function(url){ this.url = "アソシエイトのアレ。XMLを返してくれるURLをぶっ込む"; this.xml = {}; this.Regs = { tag : /(<(\w+)(\s+[^>]*)?>)(.*?)(<\/\2>)/ , option : /(\w+)="(.+?)"/ } this.ajaxContent(); }; oNkii.prototype = { xmlParse: function(http){ var lineData = http.responseText; var self = this; var regs = this.Regs; var opt = function(obj, p1, p2){ var i = 0; obj[p1] = {}; while(1){ if(p2.match(regs.option)){ obj[p1][RegExp.$1] = RegExp.$2; p2 = p2.replace(regs.option, ''); i++; } else { if(i == 0){ obj[p1] = p2; } break; } } return obj; } var con = function(p1, p2, p3){ var obj = {}; var i = 0; while(1){ if(p3.match(regs.tag)){ p3 = p3.replace(regs.tag, ''); obj = extend(obj, con(RegExp.$2, RegExp.$3, RegExp.$4)); } else { if(i == 0){ if(p3){ obj[p1] = p3; } else { obj = opt(obj, p1, p2); } } break; } i++; } return obj; }; var extend = function(pri, obj){ var hash; var length; var tmp = {}; for(hash in obj){ if(pri[hash] instanceof Array){ length = pri[hash].length; if(obj[hash] instanceof Array){ pri[hash] = pri[hash].concat(obj[hash]); } else if(typeof obj[hash] == "object"){ pri[hash][length] = {}; pri[hash][length] = extend(pri[hash][length], obj[hash]); } else { pri[hash][length] = obj[hash]; } } else if(typeof pri[hash] == "object"){ tmp = {}; tmp = extend(tmp, pri[hash]); pri[hash] = []; pri[hash][0] = {}; pri[hash][0] = extend(pri[hash][0], tmp); if(obj[hash] instanceof Array){ pri[hash] = pri[hash].concat(obj[hash]); } else if(typeof obj[hash] == "object"){ pri[hash][1] = {}; pri[hash][1] = extend(pri[hash][1], obj[hash]); } else { pri[hash][1] = obj[hash]; } } else if(typeof pri[hash] == "undefined"){ if(obj[hash] instanceof Array){ pri[hash] = obj[hash].clone(); } else if(typeof obj[hash] == "object"){ pri[hash] = {}; pri[hash] = extend(pri[hash], obj[hash]); } else { pri[hash] = obj[hash]; } } else { tmp = pri[hash]; pri[hash] = []; pri[hash][0] = tmp; if(obj[hash] instanceof Array){ pri[hash] = pri[hash].concat(obj[hash]); } else if(typeof obj[hash] == "object"){ pri[hash][1] = {}; pri[hash][1] = extend(pri[hash][1], obj[hash]); } else { pri[hash][1] = obj[hash]; } } } return pri; }; var mobj = {}; while(lineData.match(regs.tag)){ if(typeof mobj[RegExp.$2] == "undefined"){ mobj[RegExp.$2] = {}; } mobj[RegExp.$2] = extend(mobj[RegExp.$2], con(RegExp.$2, RegExp.$3, RegExp.$4)); lineData = lineData.replace(regs.tag, ''); } this.xml = extend(this.xml, mobj); }, ajaxContent: function(path){ var xml = null; var self = this; try { xml = new XMLHttpRequest(); } catch(e) { try { xml = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { try { xml = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { xml = null; } } } if(xml){ xml.onreadystatechange = function(){ if(xml.readyState == 4 && xml.status == 200){ self.xmlParse(xml); } }; xml.open("GET", this.url, true); xml.send(''); } } } })();
たぶんこれを書いたやつは頭おかしい
※正規表現がおかしいので正常に動作しません。
2008年07月21日
サイト一部移転できました
100GB程のデータをwww.heiwaboke.netからunkar.jpにこの3日間の間に移動することができたので、2ちゃんねるを表示するスクリプトの部分だけはunkar.jpに飛ばすようにしました。
unkar.jpにはトップページがまだないので、そのうち作成するつもり。
とりあえずリンク
2008年07月16日
firefox3でフレームがうまく表示できないんですが
画面を三分割するフレームを二つまでしか認識してくれない。
targetでフレームを指定する場合、3つ目のフレームは認識されずにタブ*1で開いてしまう。
比較的どうでもいいっすね。
追記
Tab Mix Plusとかいうアドオンが原因だったようです
*1:タブにもならずに普通に上書き?