javascript

onmousedown イベントが付加された アンカーは Opera ではドラッグできない

リンクをドラッグすれば、ブックマーク追加, デスクトップにショートカットをつくることができる*1。 これらの動作を頻繁に使うものではないと思うのでこれからあげることがどれほど問題になるかはわからない。 http://higeorange.com/tmp/opera_mousedown.h…

Twitter のフォロワーのブログをまとめて LDR で購読する(結構手作業)

1. http://twitter.com/statuses/followers.json を取得。 2. 取得したファイルを follower.js と改名。 3. follwer.js を以下のように編集。 var followers = [{ ..... }] // 取得したJSON 部分。 String.prototype.println = function () { print(this); }…

サイ本買ってきたよ

第3版汚れてるなぁ。表紙の染みはたぶんコーヒー。 お世話になった第3版ともお別れ?

del.icio.us のコメント内にある URL をリンクにする

// ==UserScript== // @name del.icio.us comments replace URL // @namespace http://opera.higeorange.com/ // @include http://del.icio.us/* // ==/UserScript== (function() { var comments = document.evaluate( '//p[@class="notes"]', document, nul…

Array 拡張

Array.prototype.fill = function(step) { if(this.length != 2 || typeof this[0] != 'number' || typeof this[1] != 'number') return this; var s = this[0]; var e = this[1]; var pl = (typeof step == 'number') ? step : 1; for(var res=[];s<=e;s+=p…

出るのかよ

O'Reilly Japan - JavaScript 第5版 出るとわかってたらリファレンス本なんて買わなかったのにーー。 これも買うよ。

jQuery のはまりどころ

最近になってようやく JavaScript ライブラリをいろいろ触っている。 どれがいいのかなぁと悩んだり。prototype.js? jQuery ? で本題。 各ライブラリにエレメントを取得する $() 関数がある。 prototype.js と jQuery ではこの $() 関数の挙動が違う。 proto…

"goto" は Opera で変数名として使えない

予約語としてあつかわれるようだ。 Firefox, Konqueror は問題なく使える。 http://www.addclips.org/ で気づいた。 参考 ECMAScript:予約語 [JavaScript] Safari では char/short などの予約語を変数名に使えない

キャンバスにかんする謎

キャンバスを使うためには var canvas = document.getElementById('canvas'); // CanvasRenderingContext2D を作成 var ctx = canvas.getContext("2d");と言う風にしてからいろいろいじるんだけど, ここで問題が。 var canvas = document.getElementById('c…

Canvas で遊んでみる 3

昨日の 画像回転 bookmarklet を 0度から360度の任意の値に対応した。 javascript:(function(){var l=location.href;var deg=prompt("0-360","");location.href='data:text\/html;charset=utf8,<html><head><script type="text\/javascript" src="http:\/\/labo.higeorange.com\/js\/rotate.js"><\/script><\/head></head></html>

Canvas で遊んでみる 2

画像を回転させる Bookmarklet を作ってみた。 javascript:(function(){var l=location.href;location.href='data:text\/html;charset=utf8,<html><head><script type="text\/javascript">function draw(){var canvas=document.getElementById("canvas");var img=document.createElement("img");img.src=\</head></html>…

Canvas で遊んでみる。

おもしろい。 で, CanvasRenderingContext2D を拡張してみる。 CanvasRenderingContext2D.prototype.strokeLine = function(path, closePath) { var begin = path.shift(); this.beginPath(); this.moveTo(begin[0], begin[1]); for(var i=0;i

tinyurl を展開する

tinyurl というかリダイレクト先の URL を取得。 クロスドメイン な XMLHttpRequest ができないと意味ないけど…。 function expandTinyUrl(url) { var exURL; var xhr = new XMLHttpRequest(); xhr.open('HEAD', url, false); xhr.onreadystatechange = func…

XHRで取得してきたHTMLをどう扱うか その2

responseText を replace の後方参照で ほげほげ。 res.responseText.replace(/<h1>(.*?)<\/h1>/g, function($0, $1) { alert($1); // h1要素の 中身がとれる。 }); XHRで取得してきたHTMLをどう扱うか</h1>

del.icio.us + prototype.js

user javascript を書くときに prototype.js の便利な機能を使おうと prototype.js を userjs ディレクトリにぶち込んだら del.icio.us が動かなくなった。 こういう使いかたはやっぱり無理があったか…。

オブジェクト

var test = { foo : "bar", hoge : "fuga", }これは Firefox では問題ないが,Opera では Syntax Error となる。 追記 Konquerorも問題なし。 ついでに配列。 var test = ["foo","bar","baz",] alert(test.length) // 3これは Firefox と Opera で同じ。最後…

Date.toLocaleFormat 文字化け

new Date().toLocaleFormat() と引数を何も指定しないと ”2007年02月22日 03時41分06秒" のような日時がが返ってくるが これを del.icio.us に日時を表示させるスクリプト内で使うと文字化けする。 回避策として decodeURI(escape(new Date().toLocaleString…

Date オブジェクトを お好みのスタイルに

Date.prototype.format = function(str) { var zero = /%d|%i|%m|%H|%I|%M|%S/; var date = { "%a" : (["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"])[this.getDay()], "%A" : (["Sunday", "MOnday", "Tuesday", "Wednesday", "Thursday", "Friday", "…

イベントの "which" プロパティ

マウスクリックだと 1, キーイベントだと キーコードを返す。 IEでは使えない?

del.icio.us に はてなブックマークカウンタを付けてみる。

誰かが作ってるとは思うけど。 // ==UserScript== // @include http://del.icio.us/* // ==/UserScript== (function() { var base_uri = 'http://b.hatena.ne.jp/entry/'; var image_base = 'http://b.hatena.ne.jp/entry/image/'; var post = document.eval…

spidermonkey で CGIを書く

envirionement.QUERY_STRING でクエリを取得できた。 perl の use みたいなのは load() で代用。 CGIに便利なオブジェクトが欲しいところ。

破壊的なループ

for(var a = ['hoge', 'fuga', 'foo', 'bar'];a[0];a.shift()){ alert(a[0]); } alert(a.length); >> hoge fuga foo bar 0 使いどころがわからんが。 くそ遅い…。shift() に時間かかるんだろうなぁ。 逆からアクセスしていくのでもいいんだったら var a = ['…

ループを速く

Efficient looping in Javascriptんーと,逆からアクセスしてるから速いわけじゃなくて,終了する条件の判定でのドット演算子の処理に時間がかかっているという認識でいいのだろうか。 var data = new Array(); for(var i = 0; i < 200000; i++){ data[i] = …

XHRで取得してきたHTMLをどう扱うか

resposneText で受けてそのあとどうすればいいか? http://la.ma.la/blog/diary_200506231749.htm の場合 欲しい要素の始点と終点を indexOf() で取得して slice() ふぁっきん not well-formed, XMLHttpRequest とかで | js | gm - 氾濫原 の場合 そのまま HT…

spidermonkey の environment オブジェクト

js> for(var i in environment){print(i)} MANPATH HOSTNAME TERM SHELL <略> js> environment.SHELL /bin/bash 参考 Title

はてなダイアリーの編集画面をすっきりと

"画像の投稿","トラックバックURL"を隠したり出せたりできる。どこかで見たような気もするけど書いてみた。 // ==UserScript== // @include http://d.hatena.ne.jp/USERNAME/edit* // ==/UserScript== (function() { var hideElement = document.evaluate('…

配列分割する関数

function splitArray(element, num) { var result = new Array(num); for(var i=0,len=result.length;i

keypressでのkeyCode & charCode

Firefoxはkey pressイベントでkeyCodeを取得できない。0 が返ってくる。(Windows版だと大丈夫か?後で確認。) Operaはkey pressイベントでcharCodeを取得できない。undefined が返ってくる 問題を解決するためには, element.onkeypress = function(e) { var …

greasemokeyスクリプトの注意点

今までまで書いた Greasemonkey スクリプトは全然複雑じゃなかったのでOperaの用に書いた UserScript がそのまま使えていたけど,今回はつまづいた。 それは,イベント処理を追加するときの記述。 最初は, element.onload = function() { // ほげほげ }と書…

マウスホイールイベント取得

Operaでは element.addEventListener('mousewheel', function(){}, false)これでいけるが,firefoxでマウスホイールイベントを拾ってくれない。なんでかなぁって思っていたら, element.addEventListener('DOMMouseScroll', function(){}, false)じゃないと…