Firefoxではscript要素のdefer属性がサポートされていて、これを使うと、DOM構築後に実行したいスクリプトのインデントを一段減らすことができて便利なのだが、Safariではサポートされていない。 <head> <script defer="defer"> document.body.style.backgroundColor = "#00ffff"; </script> </head> どうしても使いたいので、どうにかするスクリプトを書いた。 <head> <script src="defer.js"> document.body.style.backgroundColor = "#00ffff"; </script> </head> defer属性の代わりにscript要素のsrcに"defer.js"を追加するだけで使えるようになる。 javascripter's gis
Firefoxでdocument.readyStateがサポートされていた。確認したバージョンはMozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.2a1pre) Gecko/20090124 Minefield/3.2a1pre。 document.readyStateで、document.readyStateがどのような値になるか一覧できるようにした Safariもdocument.readyStateがサポートされているけど、Firefoxとは返す文字列が違う。Firefoxの場合は uninitialized loading (DOMContentLoadedイベントが発生) interactive (loadイベントが発生) complete で、Safariの場合は loading (DOMContentL
今までのSafariではHTMLElement Prototypingをするのに色々とハックする必要がありましたがSafari3からは直球でHTMLElementが実装されていてハックできます。 実装されているHTMLElement系のオブジェクト JavaScriptで機械的に書き出したので漏れがあるかも…。*1 HTMLFontElement,HTMLBodyElement,HTMLScriptElement,HTMLDivElement,HTMLLabelElement,HTMLIsIndexElement,HTMLElement,HTMLSelectElement,HTMLModElement,HTMLParamElement,HTMLHeadingElement,HTMLMetaElement,HTMLBaseFontElement,HTMLDListElement,HTMLPa
ちなみに Mac OSX 版では ~/Library/Preferences/com.apple.Safari.plist に IncludeDebugMenu を 1 として追加すれば Debug メニューが表示されます。 $ defaults write com.apple.Safari IncludeDebugMenu 1 なので Windows 版でも同じだろうと思って C:\Program Files\Safari\Safari.resources\Defaults.plistをエディタで開いてみると XML だったので <key>IncludeDebugMenu</key><true/> や <key>IncludeDebugMenu</key><integer>1</integer> や <key>IncludeDebugMenu</key><string>1</string
Safari で Japanize の Wiki をみるとページが空っぽで困る。 Japanize の Wiki はサイボウズラボで独自に開発した、たぶん PlusWiki という名前のシステムで動いている。PlusWiki は Wiki 記法で書かれたページを XMLHttpRequest でとってきて、HTML への変換は JavaScript でやっているらしい。 で、Safari には RegExp.leftContext, RegExp.rightContext が無い。SVN をみると r10818 で実装されているようなので、そのうち直るんだろうけど。 とりあえずは、String.prototype.match を var originalMatch = String.prototype.match; String.prototype.match = function (re
replaceメソッドをhackしてsafariでもreplace callbackを使えるようにしてみた。Safari バージョン 2.0.2(416.13)で上手く動いたそうです。手元に環境が無いので細かい検証はできませんが、とりあえず。 http://la.ma.la/misc/js/replace_callback/ 解説JavaScriptのString#replaceメソッドは文字列を置換して新しい文字列を返すメソッドですが、第二引数に置換後の文字列を指定する代わりにfunctionオブジェクトを渡してやると、Perlでいうところのeオプションみたいなことができます。 // 大文字を小文字に、小文字を大文字に String.prototype.swapcase = function(){ return this.replace(/([a-z])|([A-Z])/g,functi
AjaxプログラミングにおいてPrototype.jsは非常に重要なライブラリですが、ファイルのサイズが大きいことを理由に良くない!といわれることがしばしばです。 バージョン1.4.0時点で47kbですので、確かに1JavaScriptファイルとしては大きいですし、なんと言ってもテキストのファイルが50kb近くあるというのが生理的に受け付けないのかもしれません(1kgの鉄と1kgの綿はどっちが重い?)。 そんなあなたに(自分もだけど)おすすめなのが、JavaScriptをgzip圧縮する方法。 Windowsの場合、Cygwinを使うかGNU zipなんてのを使えば圧縮できます。 ファイルサイズ | ファイル名 47,445 bytes | prototype.js(デフォルト) 32,717 bytes | prototype_compress.js(Rhinoを使って圧縮) 10,53
■ Greasemonkey とCreammonkey で互換性を持たせる際の注意点 Sun, 29 Oct 2006 03:10 @799 /coding del.icio.us hatena clap! 軽くまとめー。主にldr2sbm を書く時にはまった点です。GM とは結構違う部分があるんで両方で動かすにはちょっと工夫が必要なのよさ。 GM_* GM にあってCM にないものそのいち。 GM_xmlhttpRequest については同ドメイン内に限りXHR が使えます。他は実装されていません。 unsafeWindow そのに。 CM では切り分けされていません。直接window にアクセス出来ます。 // Greasemonkey unsafeWindow.foo(); // Creammonkey foo(); // CM スクリプト内に同名の関数があったらそっちが実行されるけ
Safari の Date#setMonth にバグがあると聞いて試してみたところ、そもそも Date コンストラクタからして月の負数指定に対応していない様子。やれやれ仕方のない子だな WebKit はというわけで Date オブジェクト自体を書き換えるスクリプトを書いてみた。適用すると Date コンストラクタ、 Date.UTC、 Date#setMonth、 Date#setUTCMonth、 Date#setFullYear、 Date#setUTCFullYear で月を指定する際に負数を使えるようになる。 fix-webkit-date.js Date オブジェクトに関するテストケース (修正確認用) 書いている途中で気づいたのだが、WebKit、というより JavaScriptCore では関数の引数と arguments オブジェクトのプロパティが値を共有しない。つまり、f
リアルタイムCSS編集の第二弾。やってることあまり変わらないけど。 VNCでSleipnirと同時に表示してキャプチャしてみた。 http://la.ma.la/misc/demo/realtime_cssedit2.htm Apple scriptを使ってSafariをリロードすることができるのでWEBrickでSafariをリロードするだけのhttpサーバーを立てておいて、ファイル保存時に萌ディタから叩くようにしてみた。前回はSleipnirを使っていたけど、これでSafariでも同時に確認できるようになった。Safariリロードするためだけにサーバー立てるのはどうなのかとかdRubyとか使うのがいいのかも知れませんが、よく知らないので。httpだったら他のエディタからでもやりやすいんじゃないかと。 萌ディタ側function XMLHttpRequest(){ return new
COLLECTION & COPYのそのリソースを訪問済みか判定するやHatebu Addictionなどで使われている既読チェック。これらとは違う、getComputedStyle()メソッドを利用して文字色を取得し訪問済みリンクの文字色かどうかをチェックという手法で既読チェックを実現している、Jeremiah Grossman: I know where you've beenというページを見つけた。FirefoxやSafariなどではこれで既読チェックが可能。 getComputedStyle()メソッドはstyle属性やJavaScriptで設定されたスタイル以外のスタイル情報をまとめて取得するメソッドで、ComputedCSSStyleDeclarationオブジェクトを返す。そして、ComputedCSSStyleDeclarationオブジェクトのgetPropertyVal
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く