m2

javascript

Togetter を下までスクロールすると重くなっていたので Lazy Load Plugin for jQuery にパッチを書いた

https://github.com/miya2000/jquery_lazyload/commit/a739355d631209f0e482f7523dbc436aac05dba4Togetter でとトギャられたページを下までスクロールすると重くなっているのを確認しました。たしか Chrome, Firefox だとそれほどでもなかった気がしますが、…

jQuery 1.4.4 で使えなくなってるセレクタ

jQuery 1.4.4 の document.querySelectorAll を使う部分で、属性値をクォートする(ような)コードが入っています。 (L.4084) // Make sure that attribute selectors are quoted query = query.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']"); うーん、なんで必…

文字列をアニメーションしたときにフォントカラーでちらつき具合が異なるかも

iPod みたいに曲のタイトルがスクロールして止まるようなコードを書いたんですが、チラつきが気になって調査したところ、どうもフォントカラーで違いがあるようなのでテストページを書いてみました。http://miya2000.jottit.com/jsmarquee 「ちらつく」と言…

WheelTapper

http://miya2000.jottit.com/tapper元ネタは id:brazil さんの keyTapper 。下にホイールする時に同時にマウスを下に動かしてホイールすると、ホイールした間隔でスクロールし続けます。「ホイール→マウス下移動→ホイール」な感じです。 マウスを横に動かす…

find fixed

position: fixed はおもいにゃー。 (function(){ var ns = document.getElementsByTagName('*'); var count = 0; for (var i = 0, len = ns.length; i < len; i++) { var n = ns[i]; var s = document.defaultView.getComputedStyle(n,''); if (s.position =…

data スキームで localStorage できるのか試してみた。

コードはこんな感じ。 javascript:(function(){ var ifr = document.createElement('iframe'); ifr.src = 'data:text/html;charset=utf-8,%3Chtml%3E%0D%0A%3Cbody%3E%0D%0A%3Cscript%20type%3D%22text%2Fjavascript%22%3E%0D%0Awindow.addEventListener(%22…

MozBoxSizing style property | webkitBoxSizing style property

vender prefix の付いた CSS プロパティを JavaScript から設定する方法をど忘れしてたのでメモ。 Specifies or retrieves how the width and the height of the element are calculated. It affects the height and width properties. In Internet Explorer…

Function Chain

method chain (function(){ function chain() { } chain.prototype = { alert: function(value) { alert(value); return this; } }; new chain().alert(1).alert(2).alert(3); })() function chain (function(){ function chain(value) { alert(value); retu…

サジェストしてログイン不要のニコニコ動画できたよー

元ネタ: 知り合い「とりあえず検索するじゃん。そのとき、候補が出てくるから楽でいいんだよねー。あと、ニコニコ動画ってログイン必須じゃん、パスワードとメールアドレス打つの大変。」 http://d.hatena.ne.jp/amachang/20100406/1270525216 それ、Google…

indexOf と RegExp の速度比較

単純な特定文字列の存在確認をするのに indexOf と正規表現でどれくらい差があるのかなと思って、次のようなコードを書きました。 (function(){ var a = [], n = 10000; for (var i = 0; i < n; i++) { a.push('item:' + i); } var str = a.join('\n'); var …

JavaScript のコメントを除去

JSのコメント削除って簡単に書けないかなあ。文字列リテラルとか正規表現リテラルまで考えるとなあ。 http://twitter.com/miya2000/status/11177757376 とつぶやいたところ、有志が実装を投げてくれました。 - まずわたし。最初は「正規表現一発でいけるんじ…

CharsetEncoder

文字列とバイト配列を相互に変換する CharsetEncoder という JavaScript ライブラリを書きました。 GitHub - miya2000/CharsetEncoder: JavaScript charset encode/decode library. お試し用のスクリプト。 (function(){ var later = 0; if (!window.__tests…

選択文字列を取得

Opera 10.50 で document.selection が使えなくなったので window.getSelection も使うように書いてみました。 alert( (function f(w){ var d=w.document,q,t,i=0,r=d.selection,s=r&&(r.createRange()||i).text; if(!r){ s=w.getSelection()+'',q=s||d.quer…

ByteArray.js

(function(){ var acme = {}; if (this.acme == null) this.acme = acme; /// ---------------------- /// /// !!! acme.ByteArray !!! /// /// ---------------------- /// acme.ByteArray = function ByteArray(n) { if (!(this instanceof ByteArray)) re…

ソースコードは上から下に読みたいよね。

function Child() { this.name = "child"; this.favorite = "popsicle"; } (function(methods) { methods.apply/*to*/(Child.prototype); }) (function() { this.jump = function() { alert("Jumps, jump, jumpoo!!"); }; this.sayOwnFavorite = function() …

live connect は無くなるのかな

LiveConnect は、JavaScript から Java クラスなどのメソッドを呼べる機能を既存の Java の機能を利用して提供するアプリケーション作成用のインターフェースの名称です。 https://developer.mozilla.org/ja/LiveConnect 他の参考リンク https://developer.m…

日付を表示する Bookmarklet

javascript:new(Date) スペースがなくなってウレシイ。 - そもそも Date なら new いらないじゃん。 javascript:Date() - Date() と new Date() は型がチガウヨーとツッコミが。。。 javascript:(new(Date)).getFullYear()

DocumentFragment に DocumentFragment を appendChild

(function(){ var df1 = document.createDocumentFragment(); df1.appendChild(document.createElement('A')); var df2 = document.createDocumentFragment(); df2.appendChild(df1); alert(df1.firstChild && df1.firstChild.nodeName); // null alert(df2.…

hunter2

ちょっとしたシャレのつもりが少しずつ問題にぶつかったりで長々としたものに。。。 (おかげで他のスクリプトのバグを見つけた。)【コント】パスワードが伏字になる機能 bookmarklet: javascript:(function(){var a,d=document,t=d.evaluate('/\/text()[cont…

xpath の結果を配列で返す

(function(){ function x(p,c) { return (function(e){return new Array(e.snapshotLength).join(',').split(',').map(function(a,b){return e.snapshotItem(b)})})(document.evaluate(p,c||document,null,7,null)) } alert(x('/\/a')); })() .join(',').spl…

addEventListener の順番

(function(){ function a() {alert('a')} function b() {alert('b')} function c() {alert('c')} window.addEventListener('click', a, false); window.addEventListener('click', b, false); window.addEventListener('click', c, false); window.addEventL…

FizzBuzz 再燃

今更だけど FizzBuzz に制限をつけると面白かった。元ネタ 【問題】1から100までの数を表示するプログラムを書け。 ただし3の倍数のときは数の代わりに「Fizz」と表示。 5の倍数のときは「Buzz」と表示。 3と5両方の倍数の場合には「FizzBuzz」と表示すること。解…

DOM Level 2 Traversal テスト

DOM Level 2 Traversal の挙動を確認するページを作成しました。Traversal Testhttp://miya2000.up.seesaa.net/test/traversal_test.htm 気づいた点 Firefox3 には NodeIterator が実装されていない。まあ TreeWalker が NodeIterator の機能を内包してるか…

Prototype.js 1.6 コードリーディング #Function 編

ほとんど「Prototype.js 1.6.0 の変更点」の焼き直しなんですが、自分の言葉で書きとめておくのもいいかと思い、エントリにしました*1。 目次 Function#argumentNames() Function#bind(thisObj, arg0, ...) Function#bindAsEventListener(thisObj, arg0, ...…

Opera9.2系は配列を後ろから埋めていくと遅い?!

先日の「配列からn個の要素を重複無しでランダムに取り出す」の del.icio.us コメントより。 配列を後ろから埋めていく処理はOperaで実行するとやたら時間がかかったような気がします。 BNJ http://del.icio.us/url/6144e2f982e69a940e7ab74d8c319d78 うっそ…

配列からn個の要素を重複無しでランダムに取り出す

真っ先に思いついたのはコレ。 function random(array, num) { var a = array.concat(); // clone. var r = []; var l = array.length; var n = Math.min(num, array.length); while(n-- > 0) { var i = Math.floor(Math.random() * l--); r.push(a[i]); a.s…

日付フォーマット

「yyyy/MM/dd HH:mm:ss」 javascript:alert(function f(d){return d<60?('0'+d).slice(-2):d.getFullYear()+'/'+f(d.getMonth()+1)+'/'+f(d.getDate())+' '+f(d.getHours())+':'+f(d.getMinutes())+':'+f(d.getSeconds())}(new Date)) function 2つ書いたら…

ページ中央にGoogleサイト内検索を表示

即興ですが。(position:fixedを理解しないブラウザ不可) (function(){ var d=document,l=location,f=document.createElement('form'); f.style.cssText='position:fixed;padding:5px;background-color:white;border:#1E90FF solid 1px;top:40%;left:40%;z-in…

相対パスから絶対パスに変換

(function(){ var fr = document.createElement('iframe'); fr.src = 'about:blank'; fr.style.display = 'none'; document.body.appendChild(fr); var d = fr.contentWindow.document; d.write('<html><head><base href="http://d.hatena.ne.jp/miya2000/20080120/p0"></head><body><a href="hoge.html"></a></body></html>

Input Serializer

大量の input 要素を一旦文字列にして、Excel 等で編集した後にまた戻すというやつ。かなり手抜き。とりあえず文字数制限のある IE 向けに作ったんで機能はかなりショボいです。textarea 等、input 要素でないものには未対応。タブや改行が値に含まれるもの…