素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: twitter: @javascripter にどうぞ。

2008-06-01から1ヶ月間の記事一覧

JSDeferred

JSDeferred – CodeRepos::Share – Trac は簡単に非同期処理ができるライブラリ。JSDeferredを使うと、AutoPagerizeのアイコンをカーソル移動に少し遅れて移動するスクリプトは下のように書ける。 // ==UserScript== // @name moveAutoPagerizeIcon // @names…

AutoPageLoaderの細かいバグを直した

/lang/javascript/userscripts/autopageloader.user.js – CodeRepos::Share – Trac 取得済みのURLを保存するようにしたので、Twitter等で同じページを何度も継ぎ足したりしなくなった。 documentFilterが関数に渡す値を、AutoPagerize互換にした。 継ぎ足し…

ある要素に使えるCSSのプロパティ名を列挙する

var s = getComputedStyle(document.createElement('span'), null); var list = []; for(var i=0;i < s.length;i++) list.push(s.item(i)); list.sort() console.log(list);

アドレスが.user.jsで終わるものに?をつけるGreasemonkeyスクリプト

Greasemonkeyは、アドレスが.user.jsで終わればContent-Typeが何であってもインストールしようとするので、中身がHTMLでもまともに見ることが出来ない。 具体的には、githubのAutoPagerizeとか。それを直す。 // ==UserScript== // @name userjsAddQMark // …

シンプルなマウスオーバー辞書のGreasemonkeyスクリプト

英単語に1秒以上マウスオーバーしたら、その単語の意味をSPACE ALCからスクレイピングしてきて、生成したa要素のtitle属性に設定する。hrefには、取ってきたURLを設定する。 // ==UserScript== // @name mouseoverAlc // @namespace http://d.hatena.ne.jp/j…

訪問済みリンクの色を取得する

var span = document.createElement('span'); span.style.color = '-moz-visitedhyperlinktext'; var visitedColor = getComputedStyle(span, null).color;//"rgb(85, 26, 139)" 上記のような簡単なコードで、訪問済みの色を取得することができる。有害なエ…

position:fixedを使わないようにするAutoPageLoaderプラグイン

Firefox2のposition:fixedが重たいらしい話とAutoPagerize - 0xFFのAutoPageLoader用を書いた。 // ==UserScript== // @name AutoPageLoaderNotFixed // @namespace http://d.hatena.ne.jp/javascripter/ // @include http* // ==/UserScript== (function ()…

GM_getValueにはデフォルト値が指定できる

GM_getValueの第二引数には、デフォルト値が指定できるので、 var value = GM_getValue('foo'); if (typeof value == 'undefined') value = 'default'; ではなく、 var value = GM_getValue('foo', 'default'); と書くことが出来る。デフォルト値を指定して…

DocumentFragmentを使ってAutoPageLoaderを高速化

AutoPageLoaderのコードを大幅に変えた。 $Xを使った。 ページの継ぎ足しにDocumentFragmentを経由するようにした 他のスクリプトがページの構造を変えたときに、正常にpageElementを取得できなかったバグを修正した DocumentFragmentについては、http://pur…

AutoPagerizeでロード中にthrobberを回転させるパッチ

throbberってのはページのロード中に表示される、くるくる回るアイコンのこと。GM_xmlhttpRequestやXMLHttpRequestを使う場合は回ってくれないので、自分で動かす必要がある。 Index: autopagerize.user.js ===============================================…

dragLikeAdobeReaderを使っていても文字選択できるようにした

CodeReposにコミットした。 /lang/javascript/userscripts/draglikeadobereader.user.js – CodeRepos::Share – Trac Alt+ドラッグで選択。文字選択を解除するには、window.getSelection().removeAllRanges();ってすればいいことが分かったので、それを使って…

Firefox Add-onsのバージョンチェックを無効にするGreasemonkeyスクリプト

// ==UserScript== // @name getOlderAddons // @namespace http://d.hatena.ne.jp/javascripter/ // @include https://addons.mozilla.org/*/firefox/* // ==/UserScript== location.href = 'javascript:navigator.__defineGetter__("userAgent", function(…

Nodeの次に位置するノードを探す関数

追記2:XPathを使った方法も載せた 追記:ルート直下の場合でもうまくいくように変更 親ノードがなくなるまで辿る。この関数は下のように書ける。 function getNextNode(node) node.nextSibling ? node.nextSibling : node.parentNode ? getNextNode(node.pa…

カーソル位置の英単語を取得する

document.addEventListener('mousemove', function(e) { var range = e.rangeParent; if (range.nodeType != Node.TEXT_NODE) return; var word = getWord(range.wholeText, e.rangeOffset); if (word) console.log(word); }, false); function getWord(base…

wrappedJSObjectは何が危険?

追記:一番下の追記も見てください。特権昇格できてしまいます。Twitter / miya2000: @javascripter wrappedJSObjで、wrappedJSObjectが危険だという話を聞いていろいろ試してみました。 試したGreasemonkeyのバージョンは0.8.20080609.0です。まず、Greasem…

contenteditableのメモ

資料が見当たらなかったので、Firebugで調べて分かったことをメモする。 position:absoluteの場合; 機能 編集可能(編集された要素には_moz_dirty属性が付加される) リサイズ可能 移動可能 クリック時 _moz_abspos属性が付加される _moz_resizing属性が付加…

contenteditable="true"な要素を矢印キーで移動可能にする

const MOVE_PX = 10; document.addEventListener('keypress', function(e) { var elem = document.evaluate('//*[@_moz_resizing="true" and @_moz_abspos]', document.body, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null) .singleNodeValue; if (elem …

短縮URLを展開するGreasemonkeyスクリプト

追記2:CodeReposのほうは修正しました。CodeReposのほうからダウンロードしてください。 追記:下のコードは脆弱なので、もし使用されている方がいたら一旦使用を中止してください。すいません。 /lang/javascript/userscripts/unziplinker.user.js – CodeR…

AutoPageLoaderのエラー処理をまともにした

SITEINFOの取得に失敗したら次回取得するようにした。 SITEINFOを一定期間経ったら再取得する機能を、urlごとに分けた。 SITEINFOを動的に弄れるようにした。アイコンをクリックでテキストエリアが出る。 コードのインデントを変えた。 /lang/javascript/use…

Twitterのテキストエリアに自動でフォーカスする機能をオフにするGreasemonkeyスクリプト

いろいろ考えたけど、下のが簡単でいいと思う。 // ==UserScript== // @name Twitter AutoFocus off // @namespace http://d.hatena.ne.jp/javascripter/ // @include http://twitter.com/home // ==/UserScript== window.addEventListener('load', function…

Greasemonkey0.8の@require

一度取得したものをずっと使いまわすのなら、SITEINFOの取得がこんなに楽に。 // ==UserScript== // @name getsiteinfo_test // @namespace http://d.hatena.ne.jp/javascripter/ // @include http* // @require http://wedata.net/databases/AutoPagerize/i…

スクロールされるまで画像の読み込みを遅らせるGreasemonkeyスクリプト

追記:下のコードは脆弱なので、もし使用されている方がいたら一旦使用を中止してください。すいません。 大きい画像とかがある時に使えるかもしれない。 // ==UserScript== // @name lazyImageLoader // @namespace http://d.hatena.ne.jp/javascripter/ //…

AutoPageLoaderに一定期間経ったらSITEINFO更新する機能を追加した

AutoPagerizeやjAutoPagerizeでは出来るのに、AutoPageLoaderで出来ないのはくやしいので、キャッシュの更新日チェックをするようにした。 /lang/javascript/userscripts/autopageloader.user.js – CodeRepos::Share – Trac にコミットした。あと、id:drryさ…

Google検索結果の緑のURLをリンクにするGreasemonkeyスクリプトのパクリ

Linkify Google Search Results for Greasemonkeyが便利。 だけど、 検索ワードの強調表示(bタグ)がなくなってしまう。 AutoPagerizeに対応してない。 アニメーションは必要ない。 というのが気になったので、自分用に作った。 ソースを見てもやっているこ…

CodeReposのコミッタになりました!

とりあえずテストも兼ねて、autopageloader.user.jsをアップロードしました。 URLは /lang/javascript/userscripts/autopageloader.user.js – CodeRepos::Share – Trac 。 よろしくお願いします。

modalDialog

var dialog = document.body.appendChild(document.createElement('div')); var message = dialog.appendChild(document.createElement('p')); message.textContent = 'てすとてすとてすと。'; var button = dialog.appendChild(document.createElement('but…

nextLinkの推測

var nextWords = ['次', 'Next', '>', '>>', '&#187;'].map(function(i)'contains(text(),"' + i + '")').join(' or '); var nextXPath = <> //link[@rel="next"] | //a[{nextWords}] .toString(); var nextLink = document.evaluate(nextXPath, document, n…

コンテキストを指定できるevalをクロスブラウザ化(第二引数を使えるやつ)

try { var test = { foo: 1 }; eval('foo', test) } catch(e) { var _eval = eval; eval = function(str, obj) { with(obj) { return _eval(str); } } } var foo={a:'ok'}; eval('a',foo);//"ok"

今まで作ったGreasemonkeyスクリプトのまとめ

今まで作ったスクリプトをjavascripter - Userscripts.orgにアップロードしました。スクリプトもアップデートしてます。 AutoPageLoader for Greasemonkey AutoPagerizeクローン。次ページの自動継ぎ足し、GoogleImagesでも動く。 dragLikeAdobeReader for G…

del.icio.usのfaviconを生き返らせるGreasemonkeyスクリプト

追記:復活したみたいです。Twitter / Constellation: http://del.icio.us/faviconを見て知ったのだけど、faviconが403になってる。 復活するまで下のようなスクリプトを入れておくと精神衛生上よろしい気がする。 // ==UserScript== // @name del.icio.us f…