- ノヴァちゃん日記 -

個人的な日記からプログラミングの話とかオススメ情報までっ!

とりあえず仮完成なβ版!

カテゴリ
最新記事
最新コメント
[JavaScript] このエントリーを含むはてなブックマーク 2008-09-03 08:23:05

JavaScriiptでonunloadを書く時の注意点

JavaScriptにはwindow.onunloadというイベントがあります。見ての通りこれは、ページがアンロードされた時に実行したい処理を記述するところです。もっと簡単に説明すると、要するに「何らかの方法でページ内から移動もしくはページを閉じた時に発生する」と考えると分かり易いと思います。しかし、このonunloadでハマってしまい、解決できずに結局諦める事になっちゃいました。問題の事象を以下にメモしておきます。

まず、各ブラウザ毎に処理の仕方が変わってきます。IEFirefoxは、このonunloadに非常に素直な動作をしてくれます、特にIEでは、ページそのものを閉じた後や、ページが移動しきってからでも処理を続行しようと試みたりします。(これがいいのかどうかは微妙ですが・・・。)

しかし、OperaSafariはそうはいきません。

まずOperaですが、こいつは「ページ遷移がページ内のコンテンツにより発生した場合のみ」動作します。つまりどういうことかというと、

  • ページ内のリンクをクリックし、別ページへ移動 → 動作する
  • ページ内でボタンをクリックし、同じページへ移動 → 動作する
  • ページ内からOperaのアドレスバーより別ページへの移動 → 動作しない
  • onunload処理があるページを閉じる(タブを閉じるでもOperaそのものを閉じるでも) → 動作しない

ということになります。これは気をつけなければなりません。

次にSafariですが、こいつは一見正しく動作してるように見えます。っていうか大体の場合は正しく動作すると思っていいと思いますが、onunnloadを使用してAjaxで通信を行おうとするとその処理はスルーされてしまいます。つまり以下のような状況が発生します。

 

window.onunload=function(){
  alert("start!!")  // 動作する
  
  ココにAjaxでの通信処理  // ココだけ動作せずにスルーされる!!
  
  alert("end!!")    // 動作する
}

 

これはどうやらSafariのみの問題のようで、例えばOperaでは、ページ内のコンテンツからの移動でさえあれば、Ajaxだろうとなんだろうと正しく動作します、FirefoxIEも同様です。

結論

これらのことから、window.onunloadを使用してクロスブラウザ実装をするには以下の点に注意して使うべきだと判断できます。

  1. ページを閉じた時や、リロードされた時の動作は期待しない(しかし、場合によってはそれで動いてしまう事もある事も考慮する)
  2. onunload内でAjax通信は行わない(Safariで動かない)

補足

一応自分で検証した結果ではあるのですが、使用した言語とjsライブラリがRailsとPrototype.jsだったのを含め、もしかしたらこの仕様は正しくない恐れがあります。別の環境でなら案外Safariでもアッサリ動いてしまうかもしれません、もし何かわかったらコメントなりで補足お願いいたします。

コメント (0件)

コメントはまだありません。
コメントする
お名前
コメント
[雑記] このエントリーを含むはてなブックマーク 2008-08-28 18:43:25

あっれー

風邪引いたかしら・・・なんか頭痛いよぅ〜。

ところで前回言ってた地獄の計算ロジックとか言うヤツですが、
なんか一日で解けちゃってRubyでプログラムにまで起こせてしまったw
他の先輩方が5人がかりで挑んで全員撃沈したらしいので、
相当な時間的余裕も頂いてたんですがなんとまぁあっさりw

で、あまりにも早くてやることが無くなったので、
今日朝一で、今度は最終的に使用するはずのPerlに尚してみてくれる?って言われ、
僕の専門というか管轄外のPerlにまで手を伸ばすことに。
で、はじめてPerl触りましたー。って何このトリッキーな書き方wwww

しかしなんだかんだ言ってそれも午前中で終わってしまい、
いよいよタスクががら空きすぎて上長が困ってましたw
何この「デキる男」感wwwホントの実力なんて塵みたいなもんなのにww

というわけで今、久々にRailsとJavaScriptでちょっと面白いものを作ってます。
なんかとても自由にのびのびやれて幸せw


僕以外の人はデスマーチプロジェクトなのにね(´・ω・`)

何か申し訳なくなってくるなぁ・・・。あぁでもJavaScript幸せwww

コメント (0件)

コメントはまだありません。
コメントする
お名前
コメント
[雑記] このエントリーを含むはてなブックマーク 2008-08-26 22:10:47

フリーソフトとフリーソフトウェア

皆さんはこのフリーソフトフリーソフトウェアについてどう思いますか?

というのもですね、実はこの二つ、全く別物なのです。

今日会社で、僕の自分のタスクが終わったので、上長からフリーソフトウェアのライセンス調査を任されたのですが、その時に偶然見つけてしまいビックリ!同じだと思ってたら違うんですねぇ。

以下、Wikipediaから抜粋

フリーソフトウェア (Free Software、free software) とは、ソフトウェアのうち、フリーソフトウェア財団が提唱する自由なソフトウェアを指す。大半のフリーソフトウェアは無償(フリー)として配布されているが、全てのフリーソフトウェアが該当するわけではない。

対して、フリーソフト、またはフリーウェアとは?

フリーウェア (freeware) は、無料で利用(使用)できるソフトウェアである。なお、日本においては歴史的経緯(後述)からフリーソフトと呼ぶことがある。

フリーウェアは「無料で利用できる」ことに重点を置いた呼称であり、それ以外のライセンス条件、とくに変更・再配布などの条件はまちまちで、ソースコードが付属しないために変更ができなかったり、有償配布(販売)や営利利用の禁止など一定の制限が課せられているものも多い。

これに対し、フリーソフトウェア (Free Software) という用語もあり、これは「自由な(ただし、フリーソフトウェア財団が主張する意味での自由)ソフトウェア」の意味である。すなわち、ソースコードが付属し、利用・複製・学習・変更・再配布が自由にできることに重点が置かれている一方、無料であるとは限らない(ただし実際には無料のものが多い)。

つまり何が言いたいかというとですね

 

フリーソフトウェアはタダとは限らないということです。

びっくりですねぇ〜、知ってましたか?

でまぁ、実際世の中に出てるフリーソフトやフリーソフトウェアを名乗るものについてはどうなのかと。

 

・・・・

・・

やっぱり皆知らないようですw

 

そりゃそうだよwそもそもフリーソフトウェア財団なんてものが存在すること自体が驚きだもんwどこのスピードワゴン財団だよと。

あとあれです、解凍ソフト。皆さんほとんどの方は使ったことありますよね?中でも有名なので、Explzhがありますよね。でもですね、実はこのソフト、商用利用では有料だったりするんですよ。これもちょっと意外だったー。結構有名だしシェアも大きそうなので、気づかずに使っちゃってる人って結構いるんじゃないかなーとか思ってます。皆さん気をつけましょう〜。

とまぁそんなわけで今日はフリーウェアのライセンス調査なんてやってましたが、その数実に100近い数のフリーソフトのライセンスを調査しました。疲れたぁあああ!でも中にはこんな便利なのもあったんだ!っていうようなフリーソフトなんかもあったので、結構楽しかったですw

さーて明日から地獄の計算ロジックの組み立てがまってるぞーっと(´д`;)

 

参考リンク

コメント (0件)

コメントはまだありません。
コメントする
お名前
コメント
[Ruby] このエントリーを含むはてなブックマーク 2008-08-22 21:43:08

ぐはっ

なんか久しぶりに21時まで残業してしまった!
それでもおわんねー・・・けど諦めて帰宅。

今Rubyであるスクリプトを書いてるんですが、
詰まってるのはアルゴリズムだったりします。
もーこの期に及んでアルゴリズムで詰まるとか情けなすぎる。。。

再帰処理ってヤツで、アルゴリズムとしては結構基本らしいのですが、
実は僕は今までこの再帰処理ってのを一度もやったことがなかったのです。
Webプログラミングではあまり機会がなかったのもありそうですが、
再帰処理を行うべきところを別の力業で処理してたのかもしれません。
んで、ここに来て大後悔・・・。

処理の流れが頭で想像できなくて、仕方ないから後から作り直そうと思って、
やっぱり力業でやってたんですが、やればやるほど頭が回らなくなってって
ぜーんぜんだめ。すごく悔しかったー・・・。ちょっと休み中勉強しようかなぁ・・・。

なんか調子が良かったときにいきなり襲ってくる難関って辛いねぇ。




やっぱ土日はのんびりしよう!(オイ

コメント (0件)

コメントはまだありません。
コメントする
お名前
コメント
[雑記] このエントリーを含むはてなブックマーク 2008-08-22 07:43:14

Opera 9.52が出てた

細かいバグfixが入ったみたいです。
今Opera使ってて個人的に不満だなぁーと思うところは

・多段タブにできない
・Dragonflyを起動してるとバグって結構落ちる。
・キャッシュが更新されなかったりスーパーリロードが出来なかったりで超貧弱
・検索ハイライト機能がない
・インクリメンタル検索の日本語非対応

とまぁこんなところかな。
それでも他のブラウザより利点の方が圧倒的に多いので、
やっぱりOperaからは離れられないなぁw

どーでもいいけど今電車乗ってて座ってるんですが、
前に立ってる夫婦(40歳前後?)がさりげなく手を繋いでゆる〜く雑談してる。
素敵だなぁこういうの、僕もいくつになっても嫁を大切にしてこんな風にらぶらぶしたいなぁー。

コメント (0件)

コメントはまだありません。
コメントする
お名前
コメント
[ゲーム(家庭用)] このエントリーを含むはてなブックマーク 2008-08-20 07:26:48

はぐりんが仲間にッ!!!!

DS版DQ5ですが、やっとはぐりんが仲間になりました!!
以下その時の状況と状態

はぐれメタルを倒した総数
691匹
仲間にしたときのパーティ
スライム(Lv.99)スライム(Lv.99)デボラ(Lv.40後半?)ホイミスライム(LV.80前後)
装備品
スライムは素で素早さ255なので片方に毒針、もう片方にキラーピアス、後全員毒針、デボラには星降る腕輪


正直もうダメなんじゃないかと思ったw
691はかなり悪い成績なので。(500匹くらいで90%↑仲間になるとか)
しかし苦労しただけあって、起きあがったときのあの感動と興奮はやはり格別ですねw

早速仲間になったはぐりんをレベルMAX(Lv8、必要経験値は100万ちょい)にし、
ブオーンとタイマンで戦わせてみましたw

結果

はぐりん圧勝!w

ていうかこれ勝てる奴居んのかw
以下はぐりんソロで上手に戦うときのコツ(?)

1.まずスカラ
 もうこれだけでブオーンの攻撃が2とかwww多くても10くらいになりました。
 今回はぐりんのHPはレベル8になると300を越えるので、防具とか相当適当でも
 この被ダメならまず死にません。なので、実際はもっと大幅に軽減できるはずです。

2.ファイト一発
 戦いのドラムとかあればいいんですが、僕は持ってなかった(そもそもストーリー進行上まだ先?)なので、
 まぁ要はバイキルトかけろってことです。はぐりんは攻撃力の面では大分ひ弱なので、これが有効。
 凍てつく波動とかされると消えちゃうからやっぱり戦いのドラム欲しいけどね。

3.祝福の杖
 もうこれさえあれば多分ほとんど死ぬことはありませんw
 唯一の弱点とも言えるべき、回復手段をこれで補えるため、
 はぐりん使いなら必須です。強いです。


まぁ重要なのはこんなとこかな?
あとはとにかくイオナズン連発してれば相当強いです。特技はイオナズンです。


ちなみにはぐりんをすごろくに連れて行くと最高に楽です!
すごろくに出てくる敵は、自分のレベルに応じて選ばれるんですが、
はぐりんはMAXが8というプギャーなレベルなので、出てくる敵がアルミラージとかwww
ブーメラン系で一掃です。でもやっぱりはぐりんなら特技はイオナズンです。強いです。

というわけで僕にとってのドラクエクリアは本編のクリアより前にきてしまいましたw
でも面白いのでちゃんと最後までやりますよーっと。

コメント (0件)

コメントはまだありません。
コメントする
お名前
コメント
[雑記] このエントリーを含むはてなブックマーク 2008-08-20 02:37:14

むおwww

もうこんな時間wwww

やっぱプログラムってやりだすととまんねーな!

早く寝ないと明日がやばいーー!

コメント (0件)

コメントはまだありません。
コメントする
お名前
コメント
[雑記] このエントリーを含むはてなブックマーク 2008-08-20 00:39:20

もっばーいる!

モバイルで更新できるようにしました!

とはいえ改行と段落くらいしかまともに実装してないんだけどねw
普通に日記書きたい分にはこれでまずは十分かな?そのうち画像とかも張れるようにしよう。

そしてついでに見る側、つまりユーザーさん用にもモバイル用ページをサクっと作成しちゃいました。
モバイル版のアドレスは以下になります♪

http://w7.oroti.com/~yms/m/

何が変わったかといえば、タイトルのロゴが無くなったのと、
無駄なjsは読み込まないようになってます。
なので要するに

JavaScriptと画像読み込まない代わりに読み込むコンテンツは少ないから軽いよ!

ってなところですかねー?
まぁ要するにJavaScriptとか興味なくてフツーの雑記ばっか読みたい人はこっちがいいかも!

さて、トップページにもリンク張っておこうかねー。

コメント (0件)

コメントはまだありません。
コメントする
お名前
コメント
[PHP] このエントリーを含むはてなブックマーク 2008-08-19 18:54:07

コメント出来ないバグが直ったー!

これでフツーにコメントできるはずです。
その原因の方なんですが、今更余りにも恥ずかしすぎるくらいアホな理由でしたw
いやさ・・・POSTの値がどうしても渡ってこなくて、その理由でハマってました。

で、結論としては動くはずがないと思ってたリダイレクト処理が動いてて、
勝手にページ移動が発生してたためでしたwこんなことで二日間悩んだとか恥ずかしすぎるwww
まぁそれが直接の原因ではないのだけど、そのせいでバグの原因が特定できなかったのは確か。

まぁバグというのはいつも分かってしまえば下らないもんなんだよなぁw
こういう下らないミスをしないようにもっとコード書いて経験値積む必要あるなと反省した夏の朝の通勤中なのでした。




どうでもいいけどアドエスで電車の中からリモートデスクトップで
スーパーもっさりな中修正した僕を誰か褒めて!!w

コメント (0件)

コメントはまだありません。
コメントする
お名前
コメント
[雑記] このエントリーを含むはてなブックマーク 2008-08-17 23:41:23

やっと仮完成〜♪

というわけで仮ですが完成しましたっ!
なんかまだバグがありそうな気はするけど・・・。

お盆休みは9連休ということで今日がその最終日、つまり明日から仕事な訳ですが、
その間に何か作ろうとは決めてました。そこで、ブログでも作ってみようかと思ったわけですよ。

実は僕は前はてブをすこーしだけやってた事があったのですが、
はてブの記法がどうしてもどうしてもどうしても面倒くさくて、
しかも出来上がりとかレイアウト関係もなーんか納得いかなくてすぐ辞めちゃったのです。
でもブログやりたいなー最近mixiつまんないなーというわけで、
「無いなら自分で作ればいいのよっ!」なんかどっかで聞いたことある感じのセリフを口走り
こんなものを作り始めた次第なわけなのですよ。

が、結局最終日の今までやってやっと仮完成と・・・。
うーん、やはりまだまだだなぁ。

デザインに関してはCSS的にはかなり頑張ったんだけど、肝心のセンスが備わってない為、
何をどうしたら見栄えがよくなるとか使いやすくなるのかってのがわからなくてホントに困ったw
まぁ今でも気に食わないところは結構あるのだけどね・・・。特にコメント部分とかその辺。

ちなみに地味な機能ですが、このページはレフトバーを畳める仕様になってまして、
畳んだレフトバーはCookieに保存されるので、次回アクセス時も畳んだ状態で表示されるようにしてます。
個人的にはこういう細かい心配り系なシステムが大好きなノヴァちゃんなのですw
まぁ度々大きなお世話になるわけでもありますが。

今回このブログを作りたいと思ったメインの理由としては、
実は管理画面で使用しているWYSIWYGエディタにあります。

WYSIWYGエディタというのは、「What You See Is What You Get」の略であり、
要するにココで言えば、見たまんまの状態をそのままページとして反映できるよ!
って意味になりますね。

さて、今回使用してるこのWYSIWYGエディタは、
TinyMCEというもので、かなり良くできていて、
どこぞのブログの管理ツールとしても使われているとかなんとかで
結構有名(?)な感じはするのですが、実際どんなもんよ?ってことでここに設置してみます。

これが超便利です!入力して、あとはツールバー上のボタンなんかで色々とできちゃうので、
すっごく入力が楽だし、自分のイメージに近い文書がそのままできあがっちゃいますっ!
普通に改行するだけで段落区切りになるし、
各種主要操作もMSのWord互換なショートカットキーがきちんと設定されているので、
それこそWord感覚で編集ができちゃいます♪

で、そのままHTMLとして吐き出してくれるってワケ。

さーしょっぱなからかなり長いエントリになってしまったけど、
もう個人ブログだし何も気にしなくていいからすっごく気が楽♪
とりあえずブログ頑張るぞー!

 

とまぁその前に・・・モバイル用の更新ページ作んなきゃ出先で更新したくならないよなぁ(´・ω・`)
まずはそれ作るですw

コメント (0件)

コメントはまだありません。
コメントする
お名前
コメント