Home > JavaScript
JavaScript Archive
【JS】iPhoneでタップの反応が遅いと感じたら
- 2011-06-06 (月)
- JavaScript | SmartPhone
iPhone向け(Androidも?)にゲームなどを作る際、 連続でタップをする可能性のあるインターフェース(例えばADVの会話シーンなど)に、 event.click を使ってしまうと、どうも動きがもっさりとしてサクサク進まない。
そういう時は、event.click ではなく event.touchstart/touchend を使うとサクサク進むようになる。
- Comments: 0
- Trackbacks: 0
【JS】location.hrefによるXSS脆弱性
- 2011-06-03 (金)
- JavaScript
指摘を受けたのでメモ。
例えば http://example.com/ に以下のようなコードを書いたとする。
var url = location.href; document.write('<a href="' + url + '">リロードするお!</a>');
この状態でアドレスバーに http://example.com/#’>”><script>alert(0)</script> と打ち込むと、 IE8以下及びIE9互換モードの場合、alertが実行されてしまう。
- Comments: 0
- Trackbacks: 0
【JS】Node.jsはじめました
- 2011-04-14 (木)
- JavaScript | Node.js
げこたんが色々いじってるのを横目で見てたらなんだか楽しそうなのでやってみました。 wget とか make とかやってたみたいですがとりあえず MacPorts でサーチかけてみたらしっかりあるではないですか。 というわけで、インストール。
sudo port install nodejs
インストール作業はとりあえずこれで終了。
あとはここに書いてあるJSを作成して実行!
node test.js
127.0.0.1:8124 でしっかりと「HelloWorld」が表示されていたので、これにて終了。
ぱっと見てみた感じ色々できそうで楽しそうだったので今後何に使っていくか検討してみようと思います。 とりあえずは社内の作業用ツールで実験実験。
- Comments: 0
- Trackbacks: 0
【PHP】ファイルをダウンロードするときに確認ダイアログを表示する
- 2010-08-20 (金)
- JavaScript | PHP
JPEGとかPNGとかの画像をダウンロードさせるページを作っていたのですが、 aタグのhrefに画像のパスを書いても、対象の画像に遷移して困ってしまいました。 ZIP等をダウンロードするときみたいに確認ダイアログを出したかったので、 色々調べてみました。
perlやPHPでファイルのダウンロード確認ダイアログを表示させる方法 | perl/CGI | 阿部辰也のブログ――人生はひまつぶし。
ここのPHPのソースを一部改変してJSからドーンします。
<? $files = $_GET; $src = "./hoge/{$files['filename']}";</p> <h1>HTTPヘッダを送信</h1> <p>if(file_exists($src)){ header("Content-type: application/octet-stream"); header("Content-Disposition: attachment; filename=\"{$files['filename']}\"");</p> <h1>出力</h1> <p>readfile($src); }else{ header("Location: ./fuga.html"); } ?>
header(“Content-Disposition: attachment; filename=\”{$files['filename']}\”"); ここの記述でダイアログを表示させる(ついでにファイル名を決めることができる)ようですが、 セキュリティ的に問題もある模様。 [Studying HTTP] HTTP Header Fields
あと、ファイルによってMIMEタイプ(Content-Type)が異なるので、それもなんとかしなければならず。 PHP の mime_content_type() を使おうとするも非推奨とのことで断念。 とりあえず application/octet-stream とすることで回避(と言えるのかわかりませんが)しました。
で、このPHPをJSから叩く
$('a.download').click(function(e){ e.preventDefault(); var filename = ($(this).attr('href')).split('/'); filename = filename[filename.length-1]; location.href = './fuga.php?filename='+filename; });firebug とかで href 書き換えられて押されたりすると怖いので、 ファイル名の部分だけを切り取って送るようにしました。
ここまでできたので、今度は欲しい画像を選んでZIPに圧縮してダウンロード、とか作りたいのですが。 さぁ、時間が無い。
■おまけ application/octet-stream とはなんぞ web用語辞典 – application/octet-stream
なんだかわからないけど何かのファイル っていう意味っぽいです。
- Comments: 0
- Trackbacks: 0
【JavaScript】Twitterの名前部分をGoogleFontAPIで洒落たフォントにするブックマークレット
- 2010-05-20 (木)
- JavaScript | jQuery
追記 Hatena::Letに投稿してみました。
http://let.hatelabo.jp/cancer6/let/gYC-ypbCp6mDIQ
Google Font API なるものが公開されていたのでちょっと遊んでみた。 下記の一文を”Twitterのページを開いている状態”でロケーションバーにはりつけてエンターキーどーん。
javascript:(function(s){s.src="http://unolabo.boo.jp/misc/googleapi/google_fonts.js";document.body.appendChild(s)})(document.createElement('script'));
JSについては下記。
- Comments: 4
- Trackbacks: 0
【JavaScript】IE6のwindow.parent
- 2010-03-19 (金)
- JavaScript
—————-【追記(2010/03/26 19:07)】—————- 下記の方法でやっていたところ、再度エラーが出る(例によって表示はされないけど)ので、 結局 window.parent.fn() で取りました。
エラーがでたりでなかったりなんなんだよもう。。
昨日のiframeの続きで、 iframe の中の子ページから親の関数を呼び出したかったので、 とりあえず window.parent.fn() で取ってみました。
すると、IE6で動かない。 きっとスコープ的な何かがおかしいんだろうなぁと思い、 window.parent.document.fn() とか色々試しつつ調べつつ。 そうこうしているうちにこんな記事を発見。
parent – hoshikuzu | star_dust の書斎
これによると、IEの場合 document.parentWindow なるものが存在するらしい。
へーなんかきもい。
それでもとりあえず6以外ではちゃんと動いてたので、6だけに適用。なんか怖いし。 document.parentWindow.fn() で無事取得できました。
こんな感じ
if(undefined !== window.ActiveXObject && $.browser.version.indexOf('6.') != -1){ document.parentWindow.fn(); }else{ window.parent.fn(); }
- Comments: 0
- Trackbacks: 0
【JavaScript】jQueryの読み込み待ちとか関数の処理待ちとか遅延処理っぽいこと
- 2010-01-27 (水)
- JavaScript | jQuery
っていう JavaScript を書いたとき、 func1 の処理が完全に終わってから func2 の処理を行いたい。 そんなことを考えてたわけなのですが。 どうにかしてうまいこと処理したい、そう思って調べてたら、
動的スクリプトローディング(さんざん既出だと思うけど|IT戦記
こんな記事を発見。 jQuery が完全に読み込まれたのを確認してから実際の処理を行う、というものなのだったので一部拝借。
- Comments: 0
- Trackbacks: 0
【JavaScript】10分間コーディングをやってみた
- 2009-12-25 (金)
- JavaScript
元ネタはこちら、問題文もこちら http://ameblo.jp/programming/entry-10001721422.html
実際に書いたコード(そのまま)
var Cards = { "deal" : function(numPlayers, deck){ var cardsNum = deck.length, results = []; for(var i=0; i<numPlayers; i++){ if(cardsNum/numPlayers < 1){ results[i] = "\"\""; } else{ var _temp = []; for(var j=i; j<cardsNum; j+=numPlayers){ _temp.push(deck.charAt(j)); } results[i] = "\"" + _temp.join('') + "\""; } alert(results[i]); } /* for(i=0; i<numPlayers;i++){ var _temp = []; var cpp = Math.floor(cardsNum/numPlayers); //cards per player for(j=0; j<cpp; j++){ _temp.push(((cardsNum/numPlayers) < 1) ? "" : deck.charAt(j*cpp + i)); } results[i] = _temp.join(''); console.log(results[i]); } */ // document.getElementById('result').innerHTMl = "results:{\"" + results.join('\", \"') + "\"}; } }
所要時間:40分 …orz
コメントアウトで消してるところで30分ほどかかっておりました。 ただ着眼点変えてみてからは10分かかってないので、ひらめき力の問題のようです。
もっとがんばろう。。。
- Comments: 0
- Trackbacks: 0
【jQuery】Googleのテキスト読み上げ非公式APIを叩いたのをいじる
- 2009-12-21 (月)
- JavaScript | jQuery
げこがなにか作ってたのでいじってみた。
http://unolabo.boo.jp/twitter/talkTwitter/ FF2/3/3.5 Chrome4 Safari3/4 で確認。 IE6-8 Opera Chrome3では動きませんでした。
元記事はこちら http://jp.techcrunch.com/archives/20091214the-unofficial-google-text-to-speech-api/
げこが使ってたjQueryFlexPlayerがどうもFF以外ではまともに動かないようなので、jPlayerに変えただけです。
これを使って目下モリモリ作り中。。。
- Comments: 0
- Trackbacks: 0
ホーム > JavaScript
- Search
- Feeds
- Meta