JavaScript

2010-09-20

まあさスクリプト1.20

まあさスクリプトの久々なちょっと大きめの更新です。
今回の更新は、チャットへのログイン・ログアウトがあった時と、チャットに発言があった時に音を鳴らすという新機能の追加です。
あじゃ盤にスピーカーのアイコンが表示され、そのアイコンをクリックすることでこの機能のON/OFFをトグルで切り替えられます。

これであじゃ盤ログイン中に、他の作業であじゃ盤を見ていなくても新たなログインや発言を逃すこと無くフォロー出来ることでしょう。

| | コメント (4) | トラックバック (0)

2009-09-05

IEのwidow.resize



ウィンドウサイズに合わせてコンテンツのサイズ変えようとしてたら、IEだけ上手くいかない…。早速ググる。


IEでresizeイベントハンドラ中にサイズを変更するような処理を行うとresizeイベントが発生して無限ループに陥ることがあるらしい。


IE の window.resize イベントの問題を回避する - latest log


なるほどね。解決法も大変参考になりました。


| | コメント (0) | トラックバック (0)

2009-08-19

「まあさスクリプト」1.1



ちょっとだけ機能追加。


URLが自動リンクされる際アンダースコア(_)とか英数時以外の文字の変な位置でURLが切れててきちんとリンクが張られていないことがあるのをスクリプト側でなんとかしようという機能を追加。


結構前からこの機能を付けようと思っていたのだけど、Safariでうまくいかなくて保留にしてました。ふとしたことからSafariでうまくいかない理由がやっとわかったので実装してみました。Safariでは文字列をJavaからJavascriptに渡すとき、バージョンよって型がStringではなくObjectになってることがあるみたいです。


| | コメント (1) | トラックバック (0)

2009-06-11

「まあさスクリプト」バグ修正(1.02)



GoogleChromeで局面がうまく読み込めない事象が発生。


タイミングよく数日前にMacOSX版のGoogleChrome開発者向け版が配布されているようだったので、早速落として検証。どうも正規表現のgオプションでのループで失敗しているみたい。



re=/正規表現/g;
while( re.exec(str) !=null ){
//ループ
if( /*条件*/ ){ break; }
}

こんな感じでループさせて、さらにその外側に1つループがあるんだけど、どうもbreak;でループ抜けた時に前の状態(lastIndexとか)が残ってしまっているっポイ。



re=/正規表現/g;
re.lastIndex=0;

としてやるとちゃんと動くみたいだけど、なんかスマートじゃないよね。


いろいろググってみると、FireFoxなどでもそうなるみたいだ。あれ、FireFoxは試した筈…あれ…あはは駄目だorz…。


というわけで、GoogleChrome、Firefox、Operaで上手く動作してなかった模様。


正規表現のリテラルでの代入をやめてnew RegExpで正規表現オブジェクトをつくってやるのがいいらしい。



re=new RegExp("正規表現","g");
while( re.exec(str) !=null ){
//ループ
if( /*条件*/ ){ break; }
}

こういう風に書き換えました。



while( /正規表現/g.exec(str) !=null ){
//ループ
}

こうやっちゃいけないのは作りながら確認してたんだけど、それで解決したと思ってたっぽい・・・。反省。


| | コメント (0) | トラックバック (0)

2009-04-27

windowの高さ



JavaScritptでのウィンドウ内側の高さを取得する方法。





Firefoxなどwindow.innerHeight
IE標準モードdocument.documentElement.clientHeight
IE互換モードdocument.body.clientHeight

| | コメント (0) | トラックバック (0)