JavaScript

JavaScript で、画像本来のサイズ(幅, 高さ)を取得する方法

Opera で DOM Mutation Event を使用するコードを追記しました。 まとめを追加しました。 Opera パート2に取得できないケースが見つかったため、パート3 を追加しました。rhino.jpg(幅:300px, 高さ:227px) を、 <img id="rhino" src="rhino.jpg" width="100" height="75" /> と、100 x 75 で表示している場合を例に、画…

WebKit は document.defaultView.getComputedStyle の戻り値がちょっと便利

<html><head><title></title></head><body onload="boot()"><script> function boot() { var cs = document.uniqueID ? document.body.currentStyle : document.defaultView.getComputedStyle(document.body, ""); alert(cs["textAlign"]); alert(cs["text-align"]); } </script></body></html> 実行するとこうなります。 Browser textA…

uupaa-excanvas.js 0.4β

uupaa-excanvas.js version 0.4β を固めて置いておきました。 uupaa-excanvas.js HTML5::Canvas 互換機能を提供する JavaScript ライブラリです。 最新版は、http://uupaa-js-spinoff.googlecode.com/svn/trunk/uupaa-excanvas.js/README.htm で見れます。 v…

fillText を改善

今日も uupaa-excanvas.js いじってました。 uupaa-excanvas.js は IE, Opera9.5, Firefox3 で HTML5::Canvas をアレしてコレしてゴニョゴニョするJavaScript ライブラリです。 最新版は、http://uupaa-js-spinoff.googlecode.com/svn/trunk/uupaa-excanvas.…

日本語でJavaScript

前衛的でギルティなコードを目指してみた。 <body> <div id="defs" title="constructor,document,body"></div> <script> 定義 = defs.title.split(","); 窓 = this; 発火 = (0)[定義[0]][定義[0]]; 本体 = 窓[定義[1]][定義[2]]; 発火('本体.innerHTML' + '="<img src=http://www.google.co.jp/images/nav_logo4.png>"')(); </script> </body> 発火(…

uupaa-excanvas.js 0.4 alpha

IE で HTML5::Canvas を利用可能にする uupaa-excanvas.js 0.4 alpha をプレリリースしています。version 0.4 は VML と Silverlight を使って実装可能と思われる HTML5::Canvas API 互換機能を全て実装したバージョンです。ダウンロード: http://code.googl…

HSV色空間はこんなところでも役立つよ。ちらしの裏

今日もHTML5::Canvasネタです。uupaa-excanvas.js は、テキスト + シャドウを自前でレンダリングしています(in VMLモード)。 VML自体は、不透明度をサポートしているのですが、テキスト要素に不透明度を設定しても無視されるという制限があります。影の部分…

IE8 + overflow: hidden + DXImageTransform.Microsoft.Matrix で 1px はみ出る

IE8 では、overflow: hidden がちゃんと実装されていないようです。 <html><head><title></title><style> .frame { position: absolute; width: 180px; height: 130px; overflow: hidden; } .matrix { -ms-filter: 'progid:DXImageTransform.Microsoft.Matrix(M11=0.99862,M12=-0.05233,M21=0.</head></html>…

Opera の drawImage(SVGSvgElement) の実装には改善の余地があるみたい

今日もHTML5::Canvas ネタです。先日、id:edvakf さんにヒントをいただいたので、drwaImage(SVGSvgElement) で Text API の実装を試してみました。 drwaImage(SVGSvgElement,...) では実装できないのでしょうか? もしかして Opera だけ? http://tc.labs.oper…

Firefox3 独自の HTML5::Canvas TextAPI CanvasRenderingContext2D.mozDrawText に描画されない不具合があるみたい

今日もCanvasネタです。Firefox3にText APIを実装する方法を模索してましたが、そのとき見つけた不具合について書き残します。Firefox3限定のAPIに、mozPathText(), mozDrawText() というものがあります。 mozDrawText()mozTextStyle 属性で指定されたテキス…

element.clientWidth が ゼロになる

久しぶりにミクロな話題。IE6 で clientWidth が期待通りの値にならず困ってます。 // alertなし function getWidth(element) { var w = element.clientWidth; return w; } // alertあり function getWidthWithAlert(element) { alert("wait"); var w = elem…

Metatunnel in javascript を試してみた

連日の HTML5::Canvas ネタ投下です。Canvasのテストデータに飢えてて、色々と試したりしてます。Ajaxian で紹介されていた http://ajaxian.com/archives/metatunnel-1k-demo-js-vs-osを、所々最適化して、IEでも動くようにしてみたのがこちら、 http://pigs…

Opera で HTML5::Canvas の fillText() をサポートできないかな

今日も HTML5::Canvas ネタです。Opera は、Text API(fillText, strokeText) や Shadow API をいつまでも実装してくれないので、Canvas をクロスブラウザで使う上でのネックになっています。最新の Opera10α でも サポートされていません。 Firefox2.x や Fi…

今日の作業(キャンバス間のコピー)

uupaa-excanvas.js の Silverlightモードに、drawImage(別のキャンバス, dx, dy) を仮実装してみました。とりあえずは引数3個版だけです。仕様上は、引数を5個, 9個指定するとクリッピングやスケーリングができるのですが、実装が大変そうなので、やるべきか…

Shadow API をサポートした uupaa-excanvas.js 0.3 をリリースしました。

uupaa-excanvas.js は、IE で HTML5::Canvas をレンダリングする JavaScript ライブラリです。 Change Log ダウンロード ver 0.3では、このようなレンダリングをサポートしました。ShadowBlurは Silverlight3がインストールされている環境なら Webkit そっく…

uupaa-excanvas.js で shadowBlur をサポートしてみた。

Silverlight3 がインストールされている環境限定になりますが、uupaa-excanvas.js で shadowBlur をサポートしてみました。 右下のIE6の画面がそれです。Silverlight3 が入っていない場合は、shadowBlur は使えません。

いま HTML5::Canvas って使えるの? (HTML::Canvas のサポート状況)

Opera の getContext("opera-2dgame") について追記しました。 fillText(strokeText) + pattern, + linerGrad, radialGrag について追記しました。 uupaa-excanvas.js ver 0.3 リリース版に基づき表を更新しました。 uupaa-excanvas.js ver 0.31で、drawImag…

fillText, strokeText で globalAlpha が効かない

uupaa-excanvas.js についてです。 VMLでレンダリング時に globalAlpha に 1 以外を設定し、fillText, strokeText を行うと、文字が透過表示されません。Silverlight ではこの問題は発生しません。 検証コード <html><head><title>VML</title></head><body> <style>v\: * { behavior: url(#default#VML);disp</style></body></html>…

uupaa-excanvas.js に shadow を(なんちゃって)実装してみた

uupaa-excanvas.js に shadow 周りの実装が可能かテストしています。作業開始から10分程ですが、とりあえず Silverlight + TextAPI に実装してみました。 できることなら、WebKit の実装に近づけるつもりです。ゴリゴリとエミュレーションするコードも書いた…

uupaa-excanvas.js と ExplorerCanvas(excanvas.js) の違い

uupaa-excanvas.js 0.4α がダウンロード可能になりました。 最新版のダウンロード: http://code.google.com/p/uupaa-js-spinoff/downloads/list uupaa-excanvas.js と ExplorerCanvas(excanvas.js) の違いについて書いてみます。 # uupaa-excanvas.js(ver 0.…

uupaa-excanvas.js ver 0.21 を公開しました。

http://code.google.com/p/uupaa-js-spinoff/ で公開しています。 ダウンロード README 変更点 IE8 をサポート。IE8 の標準準拠モードで VML のレンダリングが可能になりました。 いくつかの BugFix を行いました。 1ファイル化しました。 本家さま復活 やっ…

IE6 ⇒ IE8 ⇒ IE6 で JavaScriptが動かなくなった

Windows XP SP3(IE6) + IEDT な環境 に IE8 をインストールしアンインストールしたら、IE6でJavaScript(JScript)が動かなくなりました。インターネット/イントラネットはOKで、ローカルゾーン(file:///, c:\...)がNGです。# IEDT: IE Developer Toolbarメニ…

IE6で behavior を使わずに DOMNodeInserted をエミュレートしてみる

* { behavior: expression(...) }とすると、DOMツリーへのノードの追加を検出できるんだけど、behavior はよく使われるので、他のライブラリとバッティングする可能性が高い。 そこで、behavior を使わずに DOMNodeInserted 相当の機能を実装できないか考え…

setExpression と removeExpression について調べ物

IE 5〜7 限定のメソッド setExpression と removeExpression について。IE8のmode8では CSS:expression は廃止された(setExpression と removeExpression も廃止されたかは不明)。 setExpression element.setExpression(String:プロパティ名, String:式): un…

失敗した

考えが浅かった。IEで透過pngを背景画像に敷き詰めるために、背景画像をもつ要素の最初の子として div要素 + vml:rect + vml:fill を追加していたが、このやり方では、padding を設定するとこうなってしまう。解決方法は多分2つ paddingを無視して背景を配置…

IEPNGFix V2とは別の方法でIE6で透過png画像を背景画像として敷き詰める

実装途中の覚書。 透過pngの背景画像をタイリングするのはかなり大変 ちょっと前に、「IEPNGFix ver2.0αが、background-image: url(alpha.png); background-repeat: repeat-x; background-position: 10% 20% をサポートした」というニュースがありました。 …

ECMAScriptベースなCSS Paserが欲しい。一年前からずっと。

当面の目的は、 CSS 3 Grid Positioning module CSS 3 Multi-column module CSS Variables その他色々 を実装するための基礎固めです。ただ、個人が遊びで取り組むような規模では無いのは確かです。 最近CSSセレクタの実装ネタが目立つのは、CSS Paserを実装…

一部のブラウザに実装されているCSSセレクタ(querySelectorAll)で良くわからないところ

2009-02-11 追記: 一部加筆/修正しています document.querySelectorAll()で、W3Cの仕様通りだとエラーになりそうだけどそうならない箇所の一覧 ×=エラーになる,▲=エラーにならない(または予想外の要素にマッチする), 未=未テスト, 空白=思惑通りにエラーにな…

レイヤーを導入し、Canvasと文字/画像の重ね合わせをイージーに

ViewとLayer View は Layerの親。View一つに対し、Layerは複数存在する。1:N の関係 Viewはposition, bgcolor, clip等のスタイルを持つ まずViewを作成しViewにLayerを追加する Layerは、Div要素またはCanvas要素で表現する Div要素なら画像や文字を配置でき…

バッドノウハウ x 3

id="foo" の要素にアクセス 普通はこう <script id="foo"> alert(document.getElementById("foo").txt); </script> document.getElementById は省略できる <script id="foo"> alert(foo.txt); </script> 27byte減 ショートコーダーならスルーしがたい小悪魔的誘惑 IEを判別(IE="\v"=="v";) (13byte) IE5〜IE8でtru…