JavaScript

JavaScriptのtype属性に気をつけろ

typeをapplication/javascriptとするとIEは受け付けてくれまでんでした。相当悩んだぞ…。

IE用に書いてたスクリプトがひどいことになってた

vml用に"v\:* {behavior: url(#default#VML);}"を適用させていたけど、エラーが出るようになりました。調べると、"*"を使えなくした模様。 "v\:line"とか、rect, roundrect, oval, shape のそれおれに適用させるように変更すると、エラーが消えました。 次に…

DSiブラウザはDomParserは文字列配列を食ってくれない…っておい

標題通り。 えー、ふつうは文字列配列を食ってくれるのは期待しないのではないかと。 スカラな文字列なら難なく食ってくれます。なのでこちらがとんでもないことしてただけです。 でも、FireFoxとかデスクトップ版Operaとかでは食ってくれました。うーん…親…

ユーザエージェントをSafariでテストしたらダメ

スクリプトからstyleを変更してCSSによる半透明を行なっていました。 CSSによる半透明は、ブラウザごとに設定が異なりますので、その差異を埋めるために、あらかじめブラウザの種類を検出しておき、半透明を設定するメソッドではブラウザの種類ごとに異なる…

vmlを扱っていて

fill属性って仕様にハッキリ書いてるのに、IEでの実装ではfilledでした。 ダメージでかすぎ。

HTML要素のピクセル単位のサイズを得る

要素オブジェクトの clientWidth, clientHeight プロパティで、ピクセル単位のサイズが得られます。 いまのいままで知らんかった…。 IE 7, IE 6, FireFox 2, Opera 9, Safari 2, PCサイトビューア で動作を確認。

style オブジェクトまわりの反応

かるく様子を見てみました。 displayは切り替えが効かない。noneになっているときはプロパティの値が変えられない。none以外のときは変えられるが変化が反映されない。 margin, padding, border, color, visibility, height は OK overflow も効くので overf…

addEventListenerが機能しない

PSPのブラウザ、addEventListener自体は存在していますが機能しません。 スクリプトで、IEとFireFox等となら、addEventListenerがnullかどうかで切り分けをしていたのですが、それをかいくぐってくれました。 仕方が無いから User-Agent を見て psp かどうか…

p要素の中にマップを作ろうとするとAPI側でエラーが出る

IE6/7で、「利用規約」を書いた要素をつけるための処理中に、API(ver. 2.64)側の33行目でエラーが発生。innerHtmlプロパティに書き込もうとしたところでエラー発生。 p要素内にマップを作ったためのようで、div要素内に作ればエラーが回避されました。

IEのXMLHTTPでCPU使用率はとても上がる

ライブラリの書き換えをしていて、あらためてIEのXMLHTTPでクエリを投げて返すという実験をやったところ、CPU使用率がとても上がるというとんでもないことになってしまいました。 Content-Type を変更してみる。"text/xml; charset=utf-8" にしてたのを "tex…

IEとSafariでは空インライン要素はフルに無視される

よく考えると、まあそうなるかな、という気もします。 パディングとかボーダーとか設定してても空のインライン要素では、ボーダーとかもまったく表示されません。 結局、ブロック要素にして、 float でインラインふうに表現するようにしました。

IEのレンダリングモードの差?

背景色だけつけたspan要素を配置していますが、なぜか表示されないページと表示するページがありまして、おかしいおかしいと思っていたら、1行目にXHTMLのDOCTYPE宣言を書いていると表示されず、そうでないと表示されます。 解決策は調査中。

SafariのcolSpan

tdエレメントにcolSpanを設定していたのが、なぜかうまくいかなかったので、「td生成→trに追加→td.colSpan設定」を「td生成→td.colSpan設定→trに追加」に変更したところ、なぜかうまくいきました。

Date::getYear()の差異

IEは西暦のまま、それ以外は1900を引いた数、です。 知らずに、40世紀の世界を作ってしまってましたよorz

FireFox以外でJSONPの通信が出来なかった理由

IE6だけのように書いてましたが、実際は、FireFox以外は動かなかったです。チェック不足…というか、失態。 よく分からん、というのが正直なところだったり。 とりあえず、scriptエレメントの追加を setTimeout で、別スレッドにまかせたら、なんか動いた、み…

IE6でselectの位置がおかしくなった理由

selectを生成して、親エレメントに追加して、option を追加していた順番を入れ替えて、 selectを生成して、option を追加して、その後で親エレメントに追加したら、正しい位置に出るようになりました。 …それだけかい。

JSONP を非同期にやる #2

id:yellow_73:20061018#p5 の続き。 http://la.ma.la/blog/diary_200609061514.htm で Operaではできない非同期呼び出しを実現する方法が出ています。そのうちの、setTimeout を使うワザについて読んでみる。 自分自身のために解説すると、setTimeout は、組…

Opera で JSONP を非同期にやる

http://la.ma.la/blog/diary_200609061514.htm まだよく分かってないです。

arguments を知ったメモ

知らんかった…。 関数の引数を任意数にしたい場合に使うらしい。 arguments.callee は、関数そのものを指すらしい。

JSONについてメモ

そもそも JSON が JavaScript Object Notation の略だってことさえ知らんかったので、とりあえずGoogleさんに聞きながらほっつき歩いていると、 http://www.baldanders.info/spiegel/remark/archives/000222.shtml に遭遇。 そこから RFC が出ていることを知…

かなりあたまわるかった

XMLHttpRequestにおけるクロスドメイン問題に遭遇。 てっきり、JavaScriptのソースのダウンロード元はセーフなんだと…。先に調査しとけよ…。 JSONPという方法で回避するワザはあるみたいですが、サーバサイドに思いっきり手を入れなくちゃいけなくなりますか…

FireFox のメモリリーク検知

Leak Monitor - https://addons.mozilla.org/firefox/2490/ メモリリークが出たら、その都度ポップアップが出ます。 開発中のモノに適用したところ、マウスホイールのイベントリスナについてリークが出ました。 便利です。 ただ、うざいと思うときもあります…

GTileLayer で表示対象外の画像をどうするか

GTileLayer は getTileUrl() を実装して、このURLをもとに画像を取りにいきます。 リモートのサーバに、動的に画像を作らせる場合には、明らかに表示対象外になっているところまで取りに行かせるのが、なんだか無駄に感じました。 そこで、表示範囲外だとサ…

Google Maps API のバージョンアップ

なんとなくGoogle Mapsコンテンツをいじっていると、Google Maps API がバージョンアップされて 2.64 になっています。 で、ブログ http://googlemapsapi.blogspot.com/ を見たところ、いくつかの変更が行われたようです。 「地図+写真」レイヤーが追加(goog…

style のプロパティから float を設定する

float でなく cssFloat でした。

エスケープの対応がブラウザごとに違う

id:yellow_73:20060904 は誤りでした。 あと、GDowonloadUrl() を使っていることを明記していませんでした。 お詫びして訂正します。 GDownloadUrl() (もしくはそこから呼ばれるブラウザが持つメソッド) は、safari, Firefox, Opera については、エンコード…

safari の escape()

JavaScriptでUTF-8の文字列を escape() にかけて、URIに組み込んでいるのですが、safariではおかしな結果になりました。 見たところ、%u0000 とかなるのが %25u0000 となっていました。 たぶん、UNICODE文字を %u0000 に変換するのと、バイト配列の要素を%00…

Google Maps の GTileLayer() を扱うために

GTileLayer では、getTileUrl()の返り値を URL として画像を取りに行き、他のレイヤーと重ねてくれます。getTileUrl()は自前で実装する必要があります。また、これに連動する画像提供サーバも必要となります。getTileUrl(point,zoom) で渡される引数 point …

メモ

table直下にtrを追加しない。table->tbody->trとする。 escape()でURLエンコードをしてくれる。

Google Maps で矩形塗りつぶしをやってみるがなんか微妙だと思う

塗りつぶしのメソッドが見つからないので、とりあえず、GPolyline を敷き詰めてみました。 var proj = new GMercatorProjection(18); function FillRect( sw, ne, color, opacity ) { var width = 1; var zoom = map.getZoom(); var lb = proj.fromLatLngToP…