JavaScript

jQueryの.data(key)はjQuery.parseJSONでparseできないときにobjectを返せないからstringを返すよ

「JavaScript部分にサーバ側で動的な値入れるのエスケープ考えないとだし嫌だよねー」 「htmlタグのdata属性使ってhtmlのエスケープだけ考えればいいようにしたいよねー」 とか思って <html data-name="monmon"> みたいなことよくやります。で、さらにjQueryなら <html data-obj='{"name":"monmon"}'> <script type="text/javascript"> console.log($('htm</html></html>…

Prototype.jsでjQueryにparents()みたいなことがしたければup()を使う

Prototype.jsとか久々に触ったので親要素辿るメソッド思い出せなかった。 「jQueryの場合はparents()だよなぁ」とか思い、ドキュメントを検索したけど出て来ず。 ググってもいいのが出て来なくて必死に探してしまった。 答えはhttp://api.prototypejs.org/do…

PhoneGapとjQuery MobileとHTML5を使ってJSONをDumpするアプリをサクッと作る

少し前にphonegapを知ったのでJavaScriptを使ってiPhoneアプリを作ってみた。 inputにJSON APIのURLを入力するとリスト表示してくれるDumper。 monmon/dump-for-dd · GitHub 試しに作っただけなのでエラー処理とか特にしてないけど、 http://search.twitter.…

JSTAPdのチュートリアル見ながらJavaScriptのテストをしてみるよ

最近JSTAPdに関するつぶやきを見て 「そうだ!触ろうと思ってインストールしたまま触ってないや!」 と思ったので実際に触ってみた流れとハマった所のメモ。 基本的には perldocjp JSTAPd::Tutorial::JA とかやってチュートリアルを見ればいい。 日本語だし…

"/var/mobile/Applications/*/MyApp.app/www//index.html" Would Like To Use Your Current Location"みたいな警告が毎回出た時の対処

YAPC::AsiaのときにオライリーブースでiPhoneアプリケーション開発ガイド ―HTML+CSS+JavaScript による開発手法を買いました。 ちょこちょこ読もうかなぁと思っていたのだけど、 薄いし、面白いし、1冊まるまる使って少しずつサンプルアプリの機能追加してい…

for (var i = 0, elem; elem = elems[i]; i++) { doSomething(elem) }って書き方見やすくていいな

Google JavaScript Style Guide 和訳 — Google JavaScript Style Guide 和訳を読んでみて、知らなかったこととかメモ。 プロパティとメソッド * Private のプロパティ, 変数, メソッドには, 末尾にアンダースコア _ を付けてください. * Protected のプロパ…

初めてのCanvasでtwitterの発言数を折れ線グラフにしてみるのと、jsdo.itを使ってみた

jsdo.itというサイトを知ったので、使ってみようと思い、ついでに触ったことないCanvasに触れてみた。 参考にしたサイト 今更聞けないcanvasの基礎の基礎 | tech.kayac.com - KAYAC engineers' blog これ見て楽しそうだなと思いcanvas触ってみた 加速度セン…

サーバ側の処理結果を待つローディング表示の作り方

昔のデータ整理してたらローディング表示っぽいJavaScriptが出てきたので貼り付け。 やってることは結構簡単で、サーバ側とクライアント側でそれぞれ以下のようなことをしてます。 サーバ側 リクエストを受け取ったら、ローディング表示になるHTMLを返し、同…

初めてのGoogleChromeExtensions。notificationを使ってみる

ネットで買ってる日用品がそろそろ切れそうで、そろそろ買おうかなぁと見てみたら、 ちょうど2,3日前に買ったら1000円くらい安かったことがわかり、 何か悔しくなったので「価格.comの最安値をチェックして安い時に買ってやろう」という気になりました。 ま…

ブログ本文のHTMLにJavaScriptのサンプルコードを書き、それを読み込んでJavaScriptを実行する方法のメモ

jQueryのAPIを眺めてて、「そういえばこのサンプルで実行するiframe、実際にファイルがあるのかな?それともJavaScriptで動的に作ってるのかな?」と思って確認したのでメモメモ。確認してみたらやっぱりJavaScriptで動的にiframe作ってるみたいですね。 (…

30分で作るJetpack Feature (2) 一から作ろうとせずに既にあるソースからインスパイア

前の日記の続き APIの使い方がちょっとわからなくてRSS使ったけど、API使うべきだった。 そしたらcategory_idを決め打ちしなくて済んだ。 (準備)試し試しやるために about:jetpackのDevelopを使って、ソースを貼りつけた後「try out this code」を繰り返せ…

30分で作るJetpack Feature (1) 概要

日記を全然更新してなかったので会社で作った資料をまるっとコピー 長い資料なので2つに分けた はじめに:Tutorialの方が詳しいです 何も考えないで使いながら覚えていきましょう とりあえずインストール https://jetpack.mozillalabs.com/ about:jetpackを…

jQueryと古いEffects.jsのArray.prototype.callがバッティングする問題を修正した

昔、jQueryを利用したブックマークレットを作ってて、 [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMViewCSS.getComputedStyle]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: jqueryのフ…

はてブのiframeブックマークレットでembedにwmode="opaque"指定してるから呼び出した後ニコニコ動画とかでコメント入力できないかも

新はてなブックマークのブックマークレットは今までみたいに新しいウィンドウではなく、ページ内にiframeのdivで出てくるようになったわけだけど、Flash上でもちゃんと表示されたので「あれ?」って思った。 前におんなじようにそのページをブックマークする…

jquery.jsを読み解くを見て勉強(第3回分)

id:lesamoureuses:20080805:1217957807 id:lesamoureuses:20080809:1218269672 に引き続き第3回分。 jQuery.fn.map jQuery.mapに自身のjQueryオブジェクトと引数で受け取ってるcallback関数を渡し、 その結果(ただの配列)をスタックに入れてjQueryオブジェ…

jquery.jsを読み解くを見て勉強(第2回分)

id:lesamoureuses:20080805:1217957807に引き続き第2回分。 jQuery.fn.attr attr()は attr(name)というgetterと、 attr(name, value)というsetterと、 attr({name1: value1})というsetter がある。 追記: attr(name, fn)というsetterと、 attr({name1: fn1}…

jquery.jsを読み解くを見て勉強(第1回分)

第1回 jQueryライブラリ(1~171行目):jquery.jsを読み解く|gihyo.jp … 技術評論社 今さらだけど、何となくしか連載読んでなかったのでもう一回はじめから勉強してみる。 ってか、残しておかないと間違ってるかどうかもわからないし忘れる。 jQueryオブジ…

jQueryでCSSをappendしようとしたらクラッシュしてハマった

jQueryを利用してブックマークレットを作ってたのだけど、 Firefoxで上手くいって「さ、念のためIEもやるかぁ」みたいに確認してみたらクラッシュ。 何でエラー出てるのかわからず、あれ?あれ?ってなった。 で、確認していったらlinkタグをheadにappendす…

JavaScriptの正規表現でmatchの結果を変数に入れずにグループ化した値を取り出す

[2008/10/29追記] 取説 正規表現を読んでみたらRegExpのプロパティはグローバル変数だから使わない方が良いのね。やっぱりいったん変数に入れよう。 - JavaScript 第5版を読んで、いつも下のようにやってた。 var str = 'abcdefghi'; var result = str.match…

jQueryのgetJSONで文字コード違うとIEでスクリプトエラーになるのを解消する

jQueryでgetJSON使ってjsonpするライブラリ作っていたのだけど、IEでエラーになるって指摘を受けた。 (僕はFirefoxだったのと、utf-8のページでロードしてたので気付かなかったのよね。。) で、確認した。 確かにエラー。 なんでだろ?と思いIEのデバッガ…

$(window).width()で表示幅、$(document).width()でドキュメント幅(ページ全体の幅)

jQuery使って$(document).width()でページ全体の幅が取得できるのは知ってたのだけど、 表示されてる幅の表示方法がわからなくて試行錯誤してた。 仕方ないからその部分だけ自分でクロスブラウザ用のコード書いてたり。 で、もう一回ググってみたらあった。 …

xyzzyの補完で*Completion*バッファ画面を開かないようにする

普段JavaScriptを書くときにxyzzyの拡張lisp/javascript-mode - XyzzyWikiを使っていたのだけど、 TABでインデントや補完をするときにCompletionというバッファが開いて2画面になるのが使いづらくて困ってました。 狭くなっちゃってソースが見づらくなるのよ…

JavaScriptのドット演算がDOMとか関係なくホントに遅いのか試してみた

「JavaScriptはドット演算が重い」ってのはよく聞いてたのだけど、 DOMとか関係なく重いのかよくわからなくて試してみた。 結果は、やっぱりドットが深くなれば重いと。 以下が試したこと。 パターンは4つ。 obj1:空のオブジェクトで5階層めにアクセスする o…

クロージャとメモリリークについてのコピペ

前に見た時に理解できずにいた2chスレを備忘録としてコピペ。 時間あったら整形する。 + JavaScript の質問用スレッド vol.52 + 元々のスレ:http://pc8.2ch.net/test/read.cgi/hp/1161422792/ 過去スレ保管庫:http://wing2.jp/~mirrorhenkan/2ch/javascrip…

jQueryの汚染をなくした上で、$を使ったパフォーマンスベンチマーク

jQueryの話を社内ブログの方に書いたのだけど、よくよく考えてみたら僕が外から見れないなと。 ってことでこっちにも同じ内容。 # 自分がばれそうなところは変更。 # って言っても社内の人にはばれるのか。 jQueryを使いながらJavaScriptを書いているのだけ…

jQuery.extendとjQuery.fn.extendの違い

[2011/03/12追記] 昔の記事だから今は見られていないかなと思ったんですが、それなりにアクセスあるようなので追記。 $('div').myMethod()みたいな感じでmyMethodという自分用の好きなメソッドを生やすのは良いのですが、 複数人でそういうことをやったりす…

jQueryがわからないので真似して書いてみる

第1回 jQueryライブラリ(1~171行目):jquery.jsを読み解く|gihyo.jp … 技術評論社を見ながら勉強。 0017: var jQuery = window.jQuery = function( selector, context ) { 0018: // The jQuery object is actually just the init constructor 'enhanced'…

(function(){..})()の確認

(function(var){..............})(var) と function(var){............} の違い。つまり、クロージャ。 - ・・・tohokuaikiのチラシの裏(それ図解できたらいいなぁ)を見てみて。 <script> hoge=(function(v){alert(v)})("aa"); alert(hoge); </script> ってやると、undefine…

変数を使う時はnew RegExp、そこで()使って$1とかで置換したい時はRegExp.$1か引用符で囲む

正規表現に変数を使いたくて、前に覚えたJavaScriptの正規表現で変数? - おふぃす・ぞんち開発日記みたいに re = new RegExp("^" + vname + "[0-9]+$"); ってやってたのだけど、置換文字列に$1を使うときのやり方でハマった。 var keyword = 'text'; var re…

メソッドがなければprototypeをさかのぼる

ハタさんのブログ(復刻版) : javascriptを初めて学ぶ人についてのおさらい。その2を見ながら学習 var Echo = { hello: function (){ return 'hello'; } }; var Hoge = function (){}; Hoge.prototype = Echo; var hoge = new Hoge; alert(hoge.hello()); //…