2008-04-01から1ヶ月間の記事一覧
ページが見つかりません | Mozilla Developer Networkを見てふと思いつく。 HTMLElement.prototype.getElementsByAttribute=function(attrib,value){ var xpath='//*[@'+attrib+(value=='*'?'':'="'+value+'"')+']'; var xRes=document.evaluate(xpath,this,…
RegExp.$1とかを使わなくても、こんな風な使い方ができる。 var str='3.14,1.993,23.3,3' var result=str.match(/\d+\.?\d*(?!,)/g).filter( function(x)parseFloat(x)>2 ) console.log(result); カンマで区切られた数値を正規表現で調べて、filter関数を使…
var $x=function(xpath){ var xpathR=document.evaluate(xpath,document,null,7,null); var result=new Array; for(var i=0;i
追記2:hogeさんのコメントによると、文字列などは特別扱いだから""==""がtrueになるそうです。ということで、下記の説明は文字列や数値には適用できません。追記:あれ、これじゃ''==''がtrueな理由を説明できない。たぶん下記の説明は間違い。 なんで[]==[…
[]==[]とか、[1,2,3]==[1,2,3]とかは全てfalseなので、配列を比較する場合はこんな関数を用意することにした。 function checkArray(one,two){ if(one.length!=two.length)return false; return one.every(function(x,i)x===two[i]) } checkArray([],[])//tr…
for(var item in window){ console.log(window[item]) } は、 for each(var item in window){ console.log(item) } と同じ?firebugでやったら微妙に違う(後者は配列として表示された)けど、なんだろう。for eachは値を取り出すときに使う。forはプロパテ…
はてなキーワードへのリンクを削除するGreasemonkey with DOM:Range - 素人がプログラミングを勉強するブログはうまく動いていなかった。 さらに、はてなグループのキーワードのclass名がokeywordということをすっかり忘れていた。結局、DOM:Rangeを使わずに…
追記:DOM:Rangeはタイミングがシビアな感じなので、下のスクリプトはAutoPagerizeと同時に使うとうまく動かなくなるっぽい。それに、*.g.hatena.ne.jpの日記のキーワードが消えてない。グダグダなので書き直す。document.createRange()とかを使うと、画面表…
うれしいことにg:javascriptのグループに招待されたので入った。 javascripterの日記 - g:javascriptが僕の所。 まだ何を書くかは決めてない。もしかしたら使わないかも。グループからダイアリーに移るブックマークレット: javascript:location.href=locati…
InfinityやNaNについて。 0でもInfinityでも-Infinityでもなく、NaNになる。Infinity/0はInfinity Infinity*0はNaN Infinity/InfinityもNaN 0/Infinityは0 1/Infinityも0 使い道は特に見当たらない。関係ないけど、 NaN==NaNはfalseになる。NaN!=NaNがtrueっ…
Add-ons for Firefoxの上部。 // ==UserScript== // @name Firefox Add-ons fix // @namespace http://d.hatena.ne.jp/javascripter/ // @description 紹介文がHTMLむき出しっぽくなっているのを直す // @include https://addons.mozilla.org/ja/firefox/* /…
事の発端 普通に値を返す関数とか、引数をセットする関数とか定義するのとなにが違うのかな・・・。値を返す、セットする関数っていうのを明示するため?よく分からない。 HTMLElement.prototype.__defineGetter__('innerText',function()this.textContent); do…
ので、このブログを前のデザインで見たくなったら javascript:document.getElementsByTagName('link')[5].href='/theme/nimbus/nimbus.css';void 0; というブックマークレットを実行。上のブックマークレットはおそらくどのはてなダイアリーでも使える。Grea…
var images=document.evaluate('//img[@alt and not(@title)]',document,null,7,null); for(var i=0;i
$('id1','id2'); みたいにやると、配列形式でElementが返ってくる関数。引数の数が不定な関数 - 素人がプログラミングを勉強するブログで作ったやつをJavaScript1.6のメソッドを使って書き直した。 $=function(){ return Array.slice(arguments).map( functi…
たとえば、Item - データベース: AutoPagerize - wedataのページのurlの欄をリンクにしたいとき。 短く書くと var links=document.evaluate('//div[@class="entry-content"]//th[text()="url"]/following-sibling::td',document,null,7,null); for(var i=-1;…
Array.prototype.forEach.call(document.images, function(image){ if(image.src.match(/^http:\/\/img\.akibablog\.net\/dragon\/\d{4}-\d{2}-\d{2}-\d{3}-s\.jpg/)){ image.src=image.src.replace(/-s(\.\w+?)$/,'$1'); } } ) 本当はハマっているXPathを使…
document.evaluate('//pre[@class="syntax-highlight" and span[@class="synComment" and contains(text(),"==UserScript==")]]',document,null,7,null); な感じ。 2007-06-21 - いぬビームを元に、上記のXPathを使ったりちょっと改造したけど、AutoPagerize…
XPathResult.prototype.forEach=function(callback,thisObj){ for(var i=0;i
すべての要素 //* div直下のp //div/p style属性を持つspan //span[@style] alt属性のないimg //img[not(@alt)] idがheaderな要素 id("header") rel属性がshortcut iconなlink要素 //link[@rel="shortcut icon"] 子要素にimgを持つa要素 //a[./img] 子、子孫…
// ==UserScript== // @name Esc de blur // @namespace http://d.hatena.ne.jp/javascripter/ // @description Escキーでフォーカスをはずせるようにします。 // @include http://* // ==/UserScript== document.addEventListener('keydown', function(e){ …
javascript:location.href=document.evaluate('//link[@rel="stylish-update-url"]',document,null,7,null).snapshotItem(0).href; http://userstyles.org/styles/ほげほげ のページで実行するとCSS本体がゲットできる
どうすればいいんでしょう。 version(170); とかやってもそんなもの無いと怒られるんです。ページが見つかりません | Mozilla Developer Networkによると、 HTMLで使うには <script type="application/javascript;version=1.8"> ... あなたのコード ... </script> とすればいいようなのですが、Firebugの場合は・・・?困っ…
String.prototype.log=function(){ alert(':'+this+':'); return this; } "foo".log().log() thisをreturnするだけで何度でも呼べるようになる。JQueryがDOM要素を返さないのは、そんなまねをするとDOM要素のprototypeを大量に作らなければいけなくなるから…
faviconを変える試み - 素人がプログラミングを勉強するブログで書き直すと言ってたので書き直した。 function replaceFavicon(url){ var fav=document.evaluate('//head/link[@rel="shortcut icon"]',document,null,9,null).singleNodeValue||document.getE…
function shuffle(size){ var array=new Array; for(var i=0;i
function loop(f,n){ for(var i=0;i
'Boys be ambitious.'.split(/\b/).map( function(word){ return (word.match(/[a-zA-Z]+/))?'['+word+']':word; } ).join(''); "[Boys] [be] [ambitious]."って返ってくる。うまい具合にやってマウスオーバー辞書をGreasemonkeyで作りたい。 テキストノード…
たとえば、配列の値の合計を求めるプログラム。いままでだったら var list=[0,1,2,3,4,5,6,7,8,9]; var result=0; for(var i=0;i
Firebug有効にしてGmail使うと、警告みたいのが出る。どうやって判定してるのか気になったから調べた。 if((document.getElementById('_firebugConsole'))&&(typeof console)){ alert('Firebug') } こんな感じでいいみたい。Gmailはconsole.firebugの存在を…