AX
カテゴリ:プログラミング( 10 )
InternetExplorerのwindow.openでエラー
またしてもIE。
InternetExplorer8で事象が発生することを確認しました。

Javascriptで新しいウィンドウでページを開かせる時に使うwindow.openの不具合です。

window.open は引数を3つ取ります。
□ 第一引数
 URL。新しいウィンドウで開きたいURL。必須。
 例:"http://www.google.co.jp/"
□ 第二引数
 ウィンドウ名。任意。
 ここで言うウィンドウ名は返り値でもあるwindowオブジェクトのname属性。
 このウィンドウ名はAタグでtargetとして指定することができる。
 例:"popupwindow"
□ 第三引数
 パラメータ。任意。
 どういう新しいウィンドウを表示するかを決める付加情報。
 例:"width=800,height=640,resizable=yes"

このうちの2つ目。ウィンドウ名を指定するための値に"ある文字"を含めるとエラーになってしまう。
というIEの不具合です。
で、ウィンドウ名に使ってはいけない"ある文字"とは。。。たくさんあります( ̄▽ ̄;)
なので、むしろ使っていい文字は何かを言いますと、
InternetExplorer(おそらく8以下)でwindow.openの第二引数として指定して良い文字は
半角英数字のみだと思われます。
なぜ、「思われます」と曖昧かというと、MSのページにそのことに関する情報が載っていないため。(==;
ということで、半角英数字のみを使いましょう。
他のブラウザはたぶん大丈夫です。少なくともSafariは特殊な文字を含めても大丈夫でした。

わたしの場合は、
[PR]
by manodeldio | 2013-04-03 00:38 | プログラミング
【CSS】bottom:0を指定しているのにできる隙間
前回に続いてまたしても隙間の話。
で、またよりよってIEの話。今回はIE6でもIE8でも事象が再現することを確認。
IEの不具合には困ったもんだ。

スタイルシートの bottom の設定をしたときの話。
詳細は書かないが、 bottom とは領域内の「下からの位置」を指定するための属性。

今回は bottom:0 を指定した時の話なので、一番下に隙間なく表示されることはず。
っていうことなんだけど、あのバグの宝庫であるIEではうまく動かず。
でも、今回のケースはかなりのレアケースだと思います。

■ コード
<div style="position:relative;width:200px;height:200px;border:1px solid black;background:#ccf;">
表示領域
<div style="position:absolute;width:80px;height:39px;bottom:0;border:1px solid black;background:#cfc;">
下に表示
</div>
</div>

■ 表示
表示領域
下に表示


■ IEの表示を再現
表示領域
下に表示




たしか上記コードでIEだと隙間ができたはずです。(家はMacなので確認できない。。。)
で、解決方法は下に表示したい要素の高さ、要するに height の下一桁を9にしないこと。
今回ならば 38pxでもいいし、40px でも指定しておけばOK。
ただ、39pxはだめだし、49pxもだめ。理由は謎。マイクロソフトにでも聞いてください(==;

このバグにも散々悩まされました。だって、指定する高さでバグが発生するなんて思わないでしょ!?
あまりにも特殊なケースだったからググってもこの事象で困っている人すらいなかったわ。
[PR]
by manodeldio | 2012-03-23 06:29 | プログラミング
【HTML/CSS】エキサイトブログでテーブルタグを使いたい
以前にも書いたような気がしますが、エキサイトブログではtableタグを使えません。
HTMLで文書を書いたことがある人ならよく知っていると思うが、
tableタグはかなり便利で誰しもが使いまくったことがあるであろうと思われます。

tableタグは文字通り、テーブル(和訳:表)を表現するためのタグです。
しかし、実際はテーブル以外の表現方法と用いられることもよくあります。
その方法とはレイアウトである。

Webサイト設計にうるさい詳しい人ならテーブルを用いたレイアウトはするべきではない
と考えている方も多いと思いますが、実際 数多くのサイトでページレイアウトを整えるために利用されています。

その一つがここのブログ。Excite Blogです。
Excite Blogではこの文書(メイン記事)を羅列するのにtableタグを使ってレイアウトしています。
そのため、ExciteBlogではtableタグを禁止しているのではないかと勝手に想像。

ちなみに記事にtableタグ(とそれに関連するタグ。td,trなど)を使うと投稿時に勝手に削除されてしまいます。

HTML記述の例



<table border="1">
<tr><th>イヌ</th><th>ネコ</th></tr>
<tr><td>ブードル</td><td>アメリカン・ショートヘア</td></tr>
<tr><td>チワワ</td><td>スコティッシュ・フォールド</td></tr>
<tr><td>ダックスフンド</td><td>ロシアンブルー</td></tr>
<tr><td>ポメラニアン</td><td>ペルシャ</td></tr>
<tr><td>ヨークシャー・テリア</td><td>日本猫</td></tr>
<tr><td>パピヨン</td><td>アビシニアン</td></tr>
<tr><td>シー・ズー</td><td>メイン・クイーン</td></tr>
<tr><td>フレンチ・ブルドッグ</td><td>ラグドール</td></tr>
<tr><td>柴犬</td><td>ソマリ</td></tr>
<tr><td>シュナウザー</td><td>ベンガル</td></tr>
</table>

Excite Blogで投稿した後の状態の例



イヌネコ
ブードルアメリカン・ショートヘア
チワワスコティッシュ・フォールド
ダックスフンドロシアンブルー
ポメラニアンペルシャ
ヨークシャー・テリア日本猫
パピヨンアビシニアン
シー・ズーメイン・クイーン
フレンチ・ブルドッグラグドール
柴犬ソマリ
シュナウザーベンガル

じゃあ Excite Blogでテーブル(表)を書きたい時はどうすればいいのか。
答えはスタイルシート(CSS)を使う。
CSSはWebページのデザインを行う時に使うもので、色やフォントなどを変えたい場合は
こちらを使うことが好ましいとされています。

たぶん、私以外の エキサイトブロガー(笑)も同じような手法でテーブルを表現していて
それでいてやはり同じように記事にしている人が多いと思います(^^;

具体的なやり方を説明する前に先に注意点。
今回のスタイルシートはインターネットエクスプローラ(IE)では動かないと思います。
(私はIEを動かす環境がないので未確認)
今回のスタイルシートのポイントは display 属性の設定で、リストタグをテーブルタグとして
無理矢理スタイルシートで表現しています。
で、この方法はIEでは使えなかったと記憶しています(FireFox、OperaはOK。IE9なら大丈夫かも!?)
将来的にはIEにも使えるようになる可能性大ということで、こんな対応で。

で、具体的な手法について。
[PR]
by manodeldio | 2011-11-05 16:27 | プログラミング
【iPhone】Interface Builder で Merge に失敗する問題
iPhoneアプリを開発してみようかなとちょっといろいろ挑戦している今日この頃。

日本人 あるいは その他2バイト文字を母国語で使用するプログラマー達は
いろいろ苦労しているんではないだろうか。

2バイト文字、つまりは日本語フォントを使っているとiPhoneアプリを開発する上で様々な問題が生じてくる。

まずは、開発者登録。
Appleの開発者用サイトが日本語に対応していないのだ。
こちらは当然日本人のなので日本語でアカウントを取得しているわけなのだが、
アカウント情報に2バイト文字(日本語)が含まれていると登録エラーになる。

で、システムでの自動登録が行えないのでAppleに直接問い合わせて
登録データを修正してもらう必要がある。

私の場合は、Web上の問い合わせフォームから
「登録エラーになりました。こんなメッセージでてるんですけど、どうすればいいのですか?」
的な内容で送信しました。

なかなか返事が来なかったので、英文で問い合わせたのと和文で問い合わせたのとで2回送った。
結果、10日くらいしてからそれぞれに返信が来た。

英文で問い合わせた方は、身分証明書をFaxしてください。と。
和文の方は、データを修正したのでもう一度登録してみてください。と。

二つのメールの内容が一致していなかったが、
とりあえず もう一度やってみろとあったので、やり直してみたら無事に登録できた。

その後 また日本語による問題が。。。
[PR]
by manodeldio | 2010-10-11 22:51 | プログラミング
【Javascript】 JavaScriptでwaitする方法 改
アクセスログを見ていると2005/10/23に書いたJavaScriptでwaitする方法の記事がよく閲覧されていると気づいた。

ただのメモとして書いた記事なのにたくさんの人が見ていてびっくり!たぶん見に来た人はただのメモ書きと知ってさぞかしがっかりして帰っていたのだろう・・・。申し訳ない・・・(´・ω・`)
というのもあのブログではjavascriptでのwaitの方法は書いていない。単純にfunctionの実行を遅らせる方法をブログの記事にしただけである。

そこで、今回はちゃんとwaitする方法を考えてみた。
前回も書いたが、
C言語にはsleep()という関数が存在し、引数として数字を与えてやれば、
その与えた時間だけ処理が止まる。

例えば、sleep(1000)なら1秒処理が止まってくれる。(単位はミリ秒)

Javaにも似たようなものがあり、wait()というメソッドが存在する。同じようにwait(1000)のようにして使う。

しかし、これと同等な機能はjavascriptにはない。
ということで自分で作ってみた。


function wait(ms) {
var d = new Date();
d.setTime(d.getTime() + ms);
while (new Date().getTime() < d.getTime());
}


指定された時間が経つまでループをして処理を止める。これでいけるはず。
ということで実行してみると ちゃんと処理が止まることを確認!!そしてそれと同時にザ・ワールド!!ブラウザも固まってしまいしたΣ( ̄□ ̄;)!!
CPUを50%(私のマシンは2コアなので実質100%)も使用してファンが唸りだす勢いです。
この方法だとループの処理にCPUが使用されブラウザは一切応答しなくなってしまいます。軽いブラクラです。ちなみにsafariだと危険なJavascriptが実行されているということで警告出てきました。orz

この方法はよくない。きっと誰も考えついて、破棄していったコードだろう・・・。

ということでもう1つ考えてみた。
[PR]
by manodeldio | 2009-12-19 22:15 | プログラミング
【StyleSheet】selectフォームの文字の大きさ
HTMLのselectタグを使うとfont-sizeを指定しても文字の大きさを変えることができない。

これはSafariだけなんでしょうか?(==;

色々 試したところ、どうやらborderの設定を変えることでfont-sizeが有効になるようです。

つまり、


<select name="list" style="font-size:200%">
<option value="1">item1</option>
<option value="2">item2</option>
<option value="3">item3</option>
</select>




とやっても文字の大きさが変わらないが、


<select name="list" style="font-size:200%;border:1px;">
<option value="1">item1</option>
<option value="2">item2</option>
<option value="3">item3</option>
</select>




とすると文字の大きさが変わる。

Macっぽいインタフェースではなくなってしまうが、使いたい時もある(でしょ?)

忘れないようにブログに_φ(。_。)メモメモ
[PR]
by manodeldio | 2009-03-29 23:41 | プログラミング
【DashBoard】Widget開発
Mac OSX 10.4 Tigerから使えるようになったDashBoardを作ってみようと色々調べてみました。DashBoardってウィジェットとか呼ばれている画面上に浮いてるようなアプリね。(説明しづらい;;)


LeopardになってDashcodeというDashBoardを開発するためのアプリケーションがAppleから提供されている。それをちょっといじってみたんだけど、ちょっと慣れが必要そうです。

でも、Widget自体はすごい簡単な構造なんですよね。実は。
[PR]
by manodeldio | 2008-04-12 08:09 | プログラミング
【WEB】CSS3 - リサイズ可能な領域
Safariがバージョン3.1となってCSS3に対応!

ということで、ちょっとCSS3の新機能を試してみる。

CSS3に対応したブラウザはSafari以外にもFireFox、Opera、IE7がある模様。
これから対応するのかな?まぁ、これから試してみるんでちゃんと動く人は対応しているブラウザを使っているってことで。(^^;

続き << CSS3からの新機能 第一弾 - [resize] リサイズ可能な領域 >>
[PR]
by manodeldio | 2008-04-06 00:06 | プログラミング
【ブックマークレット】youtube高画質モード
こないだ初めて知ったのだが、youtubeに高画質モードと言うのがあるらしい。というか、あるのです。

youtubeのURLの後ろに "&fmt=18" という魔法の文字列を付加すると画質が良くなって見ることができる。魔法の文字列とかほざいていみたが、エンジニア的に言わせてもらえばパラメータの追加をしているだけなんですが。

この高画質モードというのは、iPod touch で見る時に使われるモードらしい。iPodの場合は自動的に付加されるようになっているのかな?


まぁそれは別にいいとして、今回はこの魔法の文字列を付加するためのブックマークレットを作ってみました。

youtube高画質モード

使い方は単純。観てる動画を高画質にしたい時にこのブックマークを実行するだけ。

やってみよー。
[PR]
by manodeldio | 2008-03-15 14:25 | プログラミング
【ブックマークレット】便利ツール
ちょくちょく更新すると言いながら、特に書くことが見当たらず。(^^;

季節の変わり目の私は 非常に無気力なのである。休みだと言うのに何もしていない・・・。

ということで、Blogを書き続けるために何かテーマを用意してみた。
SEと言う仕事をやっていることからプログラミングに関する記事を書いてみることにする。

記念すべき第一回目はブックマークレットについて。

最近ちまたで色々言われているAJax。
ご存知の通りJavaScriptという言語を用いて、非同期処理でサーバとデータのやり取りを行なう技術のことである。GoogleMapが有名ですね。

そしてブックマークレットと言うのも、同じJavaScriptを使った技術なのです。
ブックマークレットを知らない人のために一応、どういうものかというのを説明しておく。

ブックマークレットというのは、

ブックマーク(InternetExplorerで言う、お気に入り)から呼び出し・実行を行なうことができるJavaScriptツールのことです。

意味分からない。詳細プリーズ!
[PR]
by manodeldio | 2008-03-09 23:16 | プログラミング