こんにちは、中川です。 今回はJavaScriptで開発していると、うっかりハマってしまうちょっとした罠たちを紹介したいと思います。 JavaScriptでの開発経験者であれば、どれか一度はひっかかったことがあるのではないでしょうか? String ●String#replace()は文字列指定では全部置き換えない 対象文字列を一括して置き換えたいなどでString#replace()を使いますが、 検索対象を文字列で指定してしまうと最初に一致した部分しか置換しません。
JavaScriptでは初期化されていない変数には全て「undefined」という値が入っています。 var a; alert(a); //undefinedが入っている これを利用して、変数が定義済みかどうかを判別することが可能です。…が、やり方がいろいろあるみたいなので、まとめてみることにします。 undefinedと比較する if (a === undefined) { alert("aは未定義"); } グローバル変数として、そのまんまundefinedという名前の変数が用意されているので、それと比較するやり方。一番素直な方法ですが、JavaScriptにおいては良くない書き方とされています。 undefinedは予約語ではなく、単なる変数です。だから上書きすることができるし、関数スコープ内で同名のローカル変数を作ることもできます。(ただし最近の処理系ではconst扱いになって上書
JavaScriptのパフォーマンスを上げる13のテクニック 一部意訳あり。(特に関数についての11と13)。深く理解したい方はスライドや動画を観ることをオススメ。 (元記事) http://www.jonefox.com/blog/2012/07/10/13-javascript-performance-tips/ - 先日、Googleのダニエル・クリフォードは"Google I/O 2012"にて「V8で打ち破るJavaScriptのスピードリミット」と題した素晴らしい講演を行った。その中で彼は、JavaScriptコードで実践できる13のシンプルな最適化手法を紹介している。それらはChromeのV8 JavaScriptエンジンのコンパイルや実行速度を上げ、コードを速くするものだ。彼はそれらについての多くの説明を行なっているが、もしただシンプルTips一覧が欲しいというなら、以下を
既に「Google I/O 2012で公開されたJavaScript高速化Tips集 | IDEA*IDEA」や「JavaScriptパフォーマンスを上げるシンプルな13の最適化 | Act as Professional – hiroki.jp by HIROCASTER」で紹介されて話題になっていたJavaScriptの高速化TIPSがhosikitiさんによって和訳されています。 リストでまとめられたリストを日本語で見たいという要望に見事に応えてくれていました! 1.コンストラクタ関数内ですべてのオブジェクトメンバを初期化する 2.常に同じ順番でオブジェクトメンバを初期化する 3.Numeric型(31bitで表現される符号付き整数)を出来るだけ使う 4.0から始まる連続した値を配列のキーとして使う 5.巨大な配列(64000個以上の要素を持つもの)は予め確保せず、必要になったら随時
Original:Don’t docwrite scripts(2012-04-10)by Steve Souders 昨日のブログ記事のHTTP Archiveが速くなっている、大きな要因の一つとしてはスクリプトローダーを使用しないことです。そのスクリプトローダーとはスクリプトを動的に読み込むためにdocument.writeを使用しているものです。振り返れば、私は2009年4月のブロッキングなしのスクリプト読み込み、続・ハイパフォーマンスWebサイト(4章)において、document.writeテクニックについて記述していました。それは以下のようなものです。 document.write('<script src="' + src + '" type="text/javascript"><\/script>’); document.writeを使ったスクリプトローダーの問題点: 挿入し
※このdataスキームを使ってURLを消す方法は、Opera9.50ではうまく動いていましたが、Opera9.64ではリファラを消すことができなくなっていました。そのため、以下の方法ではOperaのリファラを消せないことがあります。 リファラを消す方法は「リファラ実験 - referrer test」にいくつか書いてあるが、これらの方法ではOperaのブラウザでリファラを消すことができない。 私はできないものだと諦めていたが、最近、「Operaでリファラ消し :: てくてく糸巻き」という記事を見つけた。 これはdataスキームを利用した方法で、実際に試してみたところOperaでもリファラを消すことができた。 そこで、通常のリンクをリファラを送らないリンクに変えるJavaScriptを書いてみた。 (Windows XP上のIE6、IE7、Firefox2、Opera9、Safari
Latest topics > JavaScriptでテキストファイルを生成してダウンロードさせる 宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能! « 世にも奇妙な物語 Main 高橋メソッドなプレゼンツール in XUL リターンズ » JavaScriptでテキストファイルを生成してダウンロードさせる - Oct 05, 2005 どうでもいい小ネタ。 Content-Typeがapplication/octet-streamなデータを受信すると、ブラウザはそのファイルをダウンロードして保存するためのダイアログを表示する(という物が多い)。 data: URLを使うと、URIの中にデータを埋め込むことができる。 この二つの事柄から、applica
JavaScriptでよく使われるコード片に即時関数というものがあります。無名関数を宣言して即実行することで、ブロックスコープの存在しないJavaScriptにおいて擬似的にブロックスコープを再現します。 var a = "global"; (function(){ var a = "local"; alert(a); //local })(); alert(a); //global 一番有名なのはこの(function(){ ... })()の形式なのですが、なぜfunctionの外側にカッコが必要なのか不思議に思ったことはないでしょうか? ためしにfunction(){ ... }()と書いてみると、Syntax Errorが発生します。 なぜfunction(){ ... }()はSyntax Errorなのか JavaScriptにはfunction文とfunction式があって、
iPhoneのSafariにはPCブラウザについている"ソースの表示"がありません。興味ある人が少ないかもしれませんが...とりあえず方法のご紹介です。 実現方法 ブックマークレットを使って実現します。 ブックマークレットって? iPhone 3Gで使える! ブックマークレット大辞典をどうぞ。 私はこちらを使っています。もっと良いものをご存じでしたらお教え下さい。 ソースを表示する(PC用) ソースを表示する(iPhone用) 登録方法 ブックマークレットをiPhoneから直接登録する方法を紹介します。 (PCと同期している方はPC用の内容をブックマークに追加してください。) ソースを表示する(iPhone用)を開きます。 Error - 404の画面になりますがシカトして、ブックマーク登録画面へ。 タイトルを編集して登録します。 いま登録したブックマークの編集画面を開きます。 URL欄の
そこで、リリースの際はTitanium Mobileのソースコードに手を入れて、直接動画プレーヤが起動するように変更して対応していたのですが、その後モジュールが書けることがわかったので、今ではMIMEタイプを渡すと適当なIntentが起動するこちらのモジュールを使って回避しています。とっても簡単なものなので、PDFビューワなどにも応用できると思います。 いずれにせよ、Android案件ではこんな苦労はしょっちゅうです。また、特に困るのがUI設計の問題です。例えばiOSでは上の画像みたいにナビゲーションバーが表示されて、その左側には何もしなくても戻るボタンがあり、また必要に応じて画面下部にタブを表示する、みたいな画面設計になるのが一般的なのですが、Androidだとナビゲーションバーというものは存在せず、タブも画面上部に並んでしまうので、どう転んでもiOSと同じものにはなりません。Andro
FileSystemObject。よく使うんだけど、メソッド名とかがいつも思い出せなくなるので、ここにまとめて書いておく。 FileSystemObjectって何? Windowsでファイルシステムを簡単に扱えるようにするためのコンポーネント。最近のWindowsなら最初から標準で入ってる。 VB6やVBA、あとJScript/VBScript(WSHやASP)でよく使う。JScript/VBScriptでファイルシステムを扱いたい場合、通常はこれを使うしかないと思う。VB6は標準でファイルシステムを扱う関数とかがあるけど、使いにくいので(Openとか使いにくいよね?)FileSystemObjectを使った方がいい。VC++は知らない。.NETには標準で便利なクラスがあるのでFileSystemObjectは使わない。 インスタンス化 まずはインスタンス化しないと使えるようにならない。
解説 単一のテキスト・ファイルに含まれる特定の文字列を指定された文字列で置き換えることは、メモ帳などのテキスト・エディタでも十分に可能である。だが、いざ対象が複数のファイルにまたがっていると、その作業は途端に煩雑となる。いちいち個々のファイルを開いて置き換えを実行する手間はいうまでもなく、そうした冗長な手順は間違いを誘発する一因ともなる。 しかし本サンプルの文字列一括置換ツールを利用すれば、複数のテキスト・ファイルもただドラッグ&ドロップするだけで、簡単にすべての文字列を置き換えることができる。しかも、置き換え規則には正規表現を使用できるから、より複雑な編集を行いたいといった場合にも、十分に応用が利くものであろう。 操作方法 それではさっそく、文字列の一括置換ツールを作成してみよう。今回は、WSH(Windows Scripting Host)を使って作成してみる。仕様としては、置換ツール
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
One of the pain points of feature testing in client-side scripting is that for event support. DOM doesn’t really specify any means to detect exactly which events browser understands and can work with. If you’d like to know if a browser supports, say, “dblclick” event, you’re pretty much out of luck. This is probably the reason why so many scripts on the web employ unreliable browser sniffing in su
時が経つのは早いもので、ぼーとしてたらもう1月も終わりそうですね。外村です。 先日リリースされたjQuery1.4で新しく追加されたメソッドや新しい使い方ができるようになった機能を全部ではないですがいくつか紹介します。以下に変更点が全て掲載されているのでそちらも参照するといいと思います。 Version 1.4 ? jQuery API 新規で追加されたメソッド 1. nextUntil()、prevUntil()、parentsUntil() 指定したセレクタまでの要素を返します。以下の例ではitem3とitem4の後ろにテキストが追加されます。 <ul> <li id="item1">item1</li> <li id="item2">item2</li> <li id="item3">item3</li> <li id="item4">item4</li> <li id="item5
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く