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

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

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

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

ブロックを書くときは必ずセミコロンをつける

var obj = { foo: 1, bar: 2 } ではなく、 var obj = { foo: 1, bar 2 }; と書くべき。たとえば、セミコロンをつけていない場合、 var foo = {x:3} (function(){alert(foo.x)})(); がエラーになる。これは、{x:3}をfunction(){alert(foo.x)という引数で呼び…

continue_reading(AutoPagerizeみたいなもの)をGoogleImagesでも動くようにする

追記:id:mayokara384さんのコメントを元に修正。 continue_reading.user.js()は、GM_xmlhttpRequestで次ページを作っているので、JavaScriptを使ってるGoogleImagesでは継ぎ足しがうまくいかない(空のページを継ぎ足してしまう)。 このスクリプトはcontin…

要素のタグ名をリネームする

function renameElem(newName, elem) { var newElem = document.createElement(newName); var range = document.createRange(); Array.forEach(elem.attributes, function(i) { newElem.setAttributeNode(i.cloneNode(true)) }); range.selectNodeContents(e…

continue_readingとSITEINFOの連携

continue_readingはTwitterでうまく継ぎ足しができない。 PagerizationみたいにSITEINFOがある場合はSITEINFOを使い、ない場合は自動推測にしたいのでGreasemonkeyスクリプトを書いた。 ただ、continue_readingがmicroformatsのpageElement部分しか見ないの…

Webページに出てくる数字にコンマを振るGreasemonkeyスクリプト

AutoPagerize for Greasemonkeyのダウロード数が多くて、いったい何桁なのかがパッと見で分からないので作った。 // ==UserScript== // @name addCommaToNumber // @namespace http://d.hatena.ne.jp/javascripter/ // @include http* // ==/UserScript== va…

GreasemonkeyスクリプトからsessionStorageを使うとページ側からも見えてしまう

// ==UserScript== // @name test // @namespace http://d.hatena.ne.jp/javascripter/ // @include http* // ==/UserScript== sessionStorage._test = 'storage test!'; location.href = 'javascript:alert(sessionStorage._test.value)'; というGreasemonk…

文字列から要素を作りたいときはinnerHTMLではなくcreateContextualFragmentを使う

追記:ベンチマークをコメントを元に修正文字列から要素を作りたい場合、 var temp = document.createElement('div'); temp.innerHTML = '<span>foo bar fizz buzz!</span>'; とやることが多い。 だが、不要なdiv要素ができて気持ち悪いし、for文でchildNodesをひとつずつ…

insertBeforeの第二引数がnullの場合について

insertAfter - 素人がプログラミングを勉強するブログで、nextSiblingがnullの場合にはうまくいかないと書いたが、間違っていた。 parentNode.insertBefore(newNode, null); とした場合には、parentNodeの最後の子の後にnewNodeが追加される。 つまり、inser…

はてブの非表示ユーザーを共有し、自動でデータを取得するGreasemonkeyスクリプト

のデータを使って、 はてブの管理画面(http://b.hatena.ne.jp/自分のユーザーID/config)の、詳細設定の非表示ユーザーのところに「Webから取得」というボタンをつけて、クリックしたら自動的に取ってきてくれるGreasemonkeyスクリプト。 // ==UserScript==…

テキストエリアの文字数をカウントするGreasemonkeyスクリプト

// ==UserScript== // @name countTextarea // @namespace http://d.hatena.ne.jp/javascripter/ // @include http* // ==/UserScript== Array.forEach(document.getElementsByTagName('textarea'), function(textarea) { textarea.addEventListener('focus'…

ブックマークレットとユーザーCSSの連携(クリックした要素のCSSセレクタを作っていらない要素を削除する)

ユーザーCSSで広告などを削除するとき用のブックマークレット。 javascript:var textarea=document.body.appendChild(document.createElement('textarea')),s=[];with(textarea.style){position='fixed';top='0px';right='0px';width='10em';height='10em';z…

IMEがオンであってもURLバーのサイト候補を出させる(textイベント)

keydown、keyup、keypress、inputなどのイベントは、IMEがオンの場合には発生しない。 だが、textイベントを使うと、IMEがオンであってもキー入力をトリガーに関数を実行することができる。たとえば、Firefox3のURLBarで、IMEがオンの場合にもサイト候補を出…

はてなブックマークのショートカットキーを、AutoPagerizeされたページでも有効にする

追記:いろいろ不備があったので書き直した。 // ==UserScript== // @name HatenaBookmarkAutoPagerizeOk // @namespace http://d.hatena.ne.jp/javascripter/ // @include http://b.hatena.ne.jp/* // @exclude http://b.hatena.ne.jp/entry/* // ==/UserSc…

はてなダイアリーのタイトルを必ずリンクにするGreasemonkeyスクリプト

たまにタイトル部分がリンクになっていないはてなダイアリーがあって、そういう場合は「最新の日記」までカーソルを動かさなきゃならなくて不便。 // ==UserScript== // @name hatenaDiaryH1Linker // @namespace http://d.hatena.ne.jp/javascripter/ // @i…

.jsのファイルをダブルクリックで全選択するGreasemonkeyスクリプト

// ==UserScript== // @name dblclickSelection // @namespace http://d.hatena.ne.jp/javascripter/ // @include http*.js // ==/UserScript== (function() { if (document.body.firstChild.tagName.toLowerCase() != 'pre') return; document.addEventList…

GreasemonkeyからNode定数やKeyEvent定数を使う場合の注意点

追記:が優れているので、こちらもあわせて読むといいです。Greasemonkey上では、Node.ELEMENT_NODEなどがundefinedになってしまう。 for(var i in Node)unsafeWindow.console.log(i,Node[i]); とやってみれば分かるが、定数自体は定義されているが、中身が…

mailtoリンクをクリックしたらLivedoorMailで送る

ページが見つかりません | Mozilla Developer Networkを使うと、mailtoプロトコルを自由にWebメールに関連づけることができる。 javascript:navigator.registerProtocolHandler('mailto','https://mail.google.com/a/livedoor.com/?extsrc=mailto&url=%s','L…

Webページにマーカーを引く

javascript:(function(s,e){e.style.backgroundColor='yellow',addEventListener('mouseup',function(){for(var i=0;i

AutoPagerizeされた時にイベントを送る

AutoPagerize addFilterでやることをcontentWindowで定義する - ロックスターになりたいをやってみる。 Greasemonkey側: // ==UserScript== // @name dispatchAutoPagerizeEvent // @namespace http://d.hatena.ne.jp/javascripter/ // @include http* // =…

Google検索のトラッキングを解除する

// ==UserScript== // @name removeTracking // @namespace http://d.hatena.ne.jp/javascripter/ // @include http://www.google.co.jp/search* // ==/UserScript== var f = (function(doc) { var elems = doc.getElementsByClassName('l'); for (var i = 0…

pageElement、nextLinkの推測

Class、$XはAutoPageLoaderで定義してある。 var Search = new Class(); Search.prototype = { getNextLink: function (doc) { var xpath = '(descendant::link|descendant::a)[@rel="next" or @rel="prev"]|descendant::a[contains(text()," 次") or contai…

自分の被はてブ数を調べる

追記:コメントでもっといい方法教えてもらいました。 はてなに用意されている機能を使って、 http://b.hatena.ne.jp/bc/サイトURL で、ブックマーク数が入った画像が手に入ります。 ブログランキングサイト [TopHatenar]でも調べることができます。 どうや…

AutoPagerizeのFORCE_TARGET_WINDOWをXPathだけでやる

descendant-or-self::a[@href and not(starts-with(@href,"#") or starts-with(@href,"javascript:") or contains (@class,"autopagerize_link"))]は、AutoPagerizeのそれと同じ動きをする。たぶん、for文で回しながらフィルターにかけるより軽いんじゃない…

文字列からDocumentを作る(well-formedじゃなくてもOK)

XSLTProcessor+createContextualFragmentとnsIScriptableUnescapeHTML+parseFragmentの違い - ロックスターになりたいには載っていない、iframeを使う方法。 それとどの方法を使ってもHTML文字列に含まれていたHEAD,TITLE,BODYタグはなくなっちゃって子要素…