タグ

TipsとJavaScriptに関するiwwのブックマーク (54)

  • ブラウザの戻るボタンで戻ったときに呼ばれるイベントとかキャッシュとかそこらへんのこと - koumiyaの日記

    IEでは戻るボタンで戻ったときにonloadイベントが呼び出されるが、Firefoxでは呼び出されないなどブラウザによって動きが違うようです。 よくある二度押し防止対策として、送信ボタンをクリックしたときにボタンを無効(disable = false)にして次の画面に遷移させるということをやりますが、その後ブラウザの戻るボタンで戻られるとボタンが無効のままで操作できないままになってしまいます。 その対策として、画面を表示したときに無効を解除するという処理が考えられますが、IEではonloadイベントが呼ばれるがFFでは呼ばれないという上記の問題が発生します。 調べてみたところ、戻るボタンとonloadイベント - a geekで紹介されている方法で解決できるみたいです。IEではonloadを使い、FFではpageshowを使い、Safariではonloadとonunloadの合わせ技で戻る

    ブラウザの戻るボタンで戻ったときに呼ばれるイベントとかキャッシュとかそこらへんのこと - koumiyaの日記
  • 意図的に例外を無視するとき - Murayama blog.

    その昔、会社の小技天下一武道会*1で使ったネタです。 Javaとかのプログラムで検査例外をcatchする、 んだけど、 catchした例外を意図的に無視する、みたいなケースがたまにあります。 class Main { public static void main(String[] args) { try{ // 何か例外が発生するかもしれないコード // ... }catch(Exception e){ // 何もしない } } } みたいなコードのcatch節の話です。 }catch(Exception e){ // 何もしない } こんなふうにコメントを書くことで、 例外に対して何もしない、ということを明示してるのは良い例です。 #書籍っぽく言うなら、良いプラクティスです。みたいな。 プログラミング経験の少ない人は、 }catch(Exception e){ } とコメントを書かなか

    意図的に例外を無視するとき - Murayama blog.
    iww
    iww 2016/03/24
  • scriptタグの位置でもやもや - Qiita

    きっかけ HTML5 Professional Certification HTML5プロフェッショナル認定試験 | 多くの企業が推進する次世代Web言語の認定資格 | LPI-Japan こんなのあるのかー、アニメーションとかぐりぐりすごいなー とか思っておもむろにソースを開いてみんです。 そしたらscriptタグが全部headにあるのね。 いまどきはbody末尾に書くのがスタンダードなんでしょうけど、さすがに試験とかのサイトになるとセマンティック重視しないといけないから、なのかな。 いや、だからといって別に重かったりするわけじゃないしいいんだけど。 というか私だってできればhead内に書きたいですし。。。 deferが使えれば。。。 script要素にdefer属性をつけると、コンテンツの表示が終わったあとに、そのJavaScriptを実行するようになります(正確にはDOMConten

    scriptタグの位置でもやもや - Qiita
  • (0, eval)('this')とは何なのか - Qiita

    この(0,eval)('this')はいったい何なのか。調べた。 調べた結果 これはindirect eval callを使用した、どのスコープでも必ずグローバルオブジェクトのthisを取得するためのテクニックであった。 ES5ではevalを直接呼び出すと、引数のコードはそのスコープで実行されるが、間接的にevalを呼び出すと、引数のコードは必ずグローバルスコープとなるそうだ。なので引数のthisは必ずグローバルオブジェクトとなる。ブラウザではwindowとなり、Nodeではglobalになるのだ。実際どうするかだが、eval関数を変数に代入し、その変数で実行すればよい。 // Nodeで実行 var obj = new (function(){ this.direct = eval('this'); var ev = eval;// 変数に代入 this.indirect = ev('t

    (0, eval)('this')とは何なのか - Qiita
  • JavaScript Output

    W3Schools offers a wide range of services and products for beginners and professionals, helping millions of people everyday to learn and master new skills. Free Tutorials Enjoy our free tutorials like millions of other internet users since 1999

    JavaScript Output
    iww
    iww 2015/06/29
    JavaScriptでログを吐きたい人用
  • IEだけに適用されるHTML「条件付きコメント」の使い方

    こんにちは、さち です。 ウェブサイト制作の経験がある人には有名な話なんですが 古いバージョンの Internet Explorer(以下:IE) は ウェブサイトの表示で 特殊な挙動,未実装の問題 があり サイトを作る時に、別途 IE 対策が必要です。 そこで今回は IE だけに適用される HTML を記述できる 「条件付きコメント」の使い方についてまとめていきます。 「条件付きコメント」とは? 「条件付きコメント」は IE だけが解釈できる HTML コードです。 構造は下記のようになっています。 <!--[if IE 7]> 適用するHTMLコード <![endif]--> 最初に、<!--[if IE 7]> で適用する IE のバージョンを指定。 例では、[if IE 7] なので 閲覧者のブラウザが IE7 の場合に適用します。 次に、適用内容を HTML 形式で記述。 最後に

    IEだけに適用されるHTML「条件付きコメント」の使い方
    iww
    iww 2015/06/09
    全体をコメントで囲うかどうか
  • 【HTML】条件付きコメントでIEとそれ以外のブラウザでの処理を分岐する方法 | KLUTCHE

    あなたのブラウザはIEではないですね! 今このサイトを閲覧しているブラウザがIEか否かによって上の文章と写真が変わるはずです。 わかりやすいように IEの場合は重力式コンクリートダム IE以外はアーチ式コンクリートダム の画像を表示します。 HTMLはこんな感じになっています。 <!--[if !IE]><!--> <img src="arch.jpg" alt="アーチ式ダム" width="400" height="200" /> あなたのブラウザはIEではないですね!<br /> <!--<![endif]--> <!--[if IE]> <img src="gravity.jpg" alt="重力式ダム" width="400" height="200" /> あなたのブラウザはIEですね!<br /> <![endif]--> コメント内の[if !IE]で、IEかどうかの判別を

    iww
    iww 2015/06/09
    全体をコメントで囲うかどうか
  • jQuery.ajax でリクエストをキャッシュさせない方法 - 葉っぱ日記

    jQuery.ajax を使ってGETでリソースにアクセスした場合、IEでは2回目以降のリクエストが実際には発行されずにキャッシュされた結果が使われてしまいます。これを防ぐには $.ajax( { url : "http://example.com/", cache : false, data : { a : "abcd" }, ... } ); のように、cache オプションに false を指定すればいいようにドキュメント(http://docs.jquery.com/Ajax/jQuery.ajax#toptions)に書かれています。実際に cache : false を設定してみると、リクエストの発行される URL は、 http://example.com/?a=abcd&_=1253861397368 のようにクエリの末尾に現在時刻のミリ秒が付加されたものになります。 たい

    jQuery.ajax でリクエストをキャッシュさせない方法 - 葉っぱ日記
  • [チラ裏]自分自身のウィンドウ名を変更(上書き)する[HTMLとJSの話]

    個人的メモ。HTMLとJSの話。 もしかしたら、知ってる人にとっては「当たり前じゃん」って話かもしれませんが、少なくとも私は今日まで気づかなかったのでメモ。 基的にはHTMLでウィンドウをパタパタ開くのはよろしくない訳なんですが、システムによっては、新規ウィンドウだかを使わざるを得ない(使った方が便利)ってことはよくある。 んで、たとえばA.htmlからB.htmlを、aだかwindow.openだかで新規ウィンドウつかって開いた時、新規ウィンドウ(B.html)から、親ウィンドウ(A.html)に対して命令したいことってのは、まぁ普通にあるわけです。 ところが、B.htmlのハンドラをSWFとかに持たせた場合、JSによるwindow.openerってのは、環境によって警告がでちゃう。 そうなると、親(A.html)ウィンドウにウィンドウ名が割り振られていない場合、B.htmlからA.h

    iww
    iww 2014/09/01
    this.window.name='newname' なるほど素晴らしい
  • "String contains an invalid character" error - mozillaZine Forums

  • Firefoxでの擬似window.event

    Gecko系のブラウザでは、これはNetscape4.x時代からずっとそうなんだけど、イベントは、イベントハンドラーにargumentとして渡されるので、この手の記述には必ず引数(ひきすう)を書く必要がある。一方、IEでは(Operaもか?)、イベントモデルには、最後に生じたイベントをキャプチャーするwindow.eventという属性があり、これはどこからでも自由にアクセスすることが出来る。以上のことをまとめると、イベントに関してクロスブラウザーな記述をしようと思えば、例えば以下のような感じになる。 function getEventType(e){ var e = e || window.event; alert("Event Type is:" + e.type); } で、ここで引数に使用している"e" であるが、これはGecko系のためだけに必須である。window.event で

    iww
    iww 2014/03/24
    function(event) をいちいち書かなくて済むかもしれない話
  • Javascript/jQuery/input要素のvalueを操作する - 俺の基地

    prototype.js感覚で使ってたら嵌ったw 実は結構迷ったのでメモ <input type="text" value="" id="hoge" /> こうやってもだめ $('#hoge').value = 'aaa'; こうじゃないとダメ $('#hoge').val('aaa'); タグ Tag: Javascript jQuery

  • JavaScript イディオム集

    JavaScriptでは、初見の人にはさっぱりわからないけれども、ある程度慣れた人は当たり前に使うイディオムが結構たくさんあります。知ってしまえば何てことはないので、私の知っている限りのイディオムとその意味を解説します。 (7/3追記: twitter等で教えていただいた内容を追加しました) +v (数値化) var v = "123"; console.log(+v + 100) // 223 console.log(v + 100) // 123100 vを数値化する方法では最もメジャーです。parseFloat(v) に比べて高速なのに加えて、parseFloatとは細かい挙動が異なります(例えば空文字列の場合、parseFloatならば NaN になりますが、 +v の場合はゼロになります)。必ず数値になることが保証されており、文字列などで数値化出来ない場合はNaNが返ります。 v

    iww
    iww 2013/10/28
    「バッドノウハウとはこういうことだ!」 という感じ。 便利
  • Javascript/オブジェクトに指定したプロパティが存在するか確認する - 俺の基地

  • [JavaScript] 無名関数を再帰的に呼び出す

    無名関数にはその名の通り名前がないので関数名で呼び出すことができませんが、arguments オブジェクトの callee プロパティを使うことで自分自身を再帰的に呼び出すことができます。 下記はid「target」が指定されている要素にsaitamaという文字列を1秒ごとに延々と表示し続けるコードです。setTimeout に渡す関数オブジェクトを arguments.callee とすることで自分自身の関数名を書かずに示すことができます。 setTimeout メソッドについてはこちらの記事でも以前紹介しています。 <html> <head> <meta charset="UTF-8" /> <script type="text/javascript"> window.onload = function(){ var hoge = function(){ document.getEle

    [JavaScript] 無名関数を再帰的に呼び出す
    iww
    iww 2013/06/09
    setTimeoutで自分自身を書くとき使うワザ
  • 一行入魂 jQueryでcheckedとdisabledを便利にする

    JavascriptやjQueryでdisabledやcheckedを制御したり値を取ったりするのがめんどくさかったので、便利関数を作りました。 // チェックボックスのチェック jQuery.fn.checked = function(flag) { if (undefined == flag) { return undefined != jQuery(this).attr("checked"); } return this.each(function(){ if (flag) { if (undefined == jQuery(this).attr("checked")) { jQuery(this).click(); } } else { if (undefined != jQuery(this).attr("checked")) { jQuery(this).click(); }

    iww
    iww 2013/03/12
    $.fn.extend() を使わず直接書いちゃう書き方
  • GoogleのJSON(モドキ)の先頭にwhile(1); がつく理由 - 葉っぱ日記

    なぜGoogleはJSONの先頭に while(1); をつけるのか #JavaScript #HTML #Ajax #StackOverflow - Qiita これはクロスサイト・リクエスト・フォージェリ対策。違うよ!全然違うよ! 攻撃者の作成した罠ページにてJSONを<script src="target.json">みたいに読み込んで、ゴニョゴニョやることでJSON内の機密情報に攻撃者がアクセス可能というのは合ってるけど、それを「クロスサイト・リクエスト・フォージェリ」とは言わない。無理に何か名前をつけて呼ぶとすれば、「JSON Hijacking」という俗称や、あるいは単純にクロスサイトでの情報漏えい、程度ですかね。 ちなみに、ArrayコンストラクタやObjectでのアクセサを定義してJSONをJSとして読み込んで内部にアクセスする手法は、現在のところ公にされているところでは古

    GoogleのJSON(モドキ)の先頭にwhile(1); がつく理由 - 葉っぱ日記
    iww
    iww 2013/02/06
    結局不正なアクセスに対する嫌がらせであることには変わりない
  • 目から鱗が落ちた JavaScript の即時関数パターンの使い方 - present

    JavaScript でよくやるおまじないの1つに、即時関数パターンがあります。こんなの。 (function(){ // ... 何かする })(); 自分が書いたコードとライブラリの間で、名前が衝突するのを回避するときに使ってきました。 で、ついこの間、enchant.js のソースコードを読んでいたんですが var VENDER_PREFIX = (function() { var ua = navigator.userAgent; if (ua.indexOf('Opera') != -1) { return 'O'; } else if (ua.indexOf('MSIE') != -1) { return 'ms'; } else if (ua.indexOf('WebKit') != -1) { return 'webkit'; } else if (navigator.pr

    目から鱗が落ちた JavaScript の即時関数パターンの使い方 - present
  • フレームページでも動作するブックマークレットを書く際のテンプレ - 小さい頃はエラ呼吸

    ブックマークレットを作る際に、普通に書くとフレームページで動作しないことがあります。フレームページに対応するため、まずスクリプトを実行するページがフレームページなのかどうかを判定して、処理を行う必要があります。 コードにすると以下のような感じ。 フレームページと通常のページで処理を分ける if (window.frames.length != 0) { // フレームページ用の処理 for(var i=0, len=window.frames.length; i<len; i++) { // フレーム内のドキュメントに対する処理 window.frames[i].document.hogehoge } } else { // 通常のドキュメントに対する処理 document.hogehoge } 以下のエントリもあわせてどうぞ JavaScriptでファイル名から拡張子を取得する 超簡単J

  • JavaScript のセレクターの定番イディオム

    JavaScript のセレクターの定番イディオム 2010-08-30-2 [Programming] わざわざ記事にするまでもないことですが将来のためにあえて記事化。 JavaScript の定番イディオム。 function $(id) {return document.getElementById(id)} document.getElementById() の省略記法として $() を使うためのおまじない。 prototype.js でおなじみの「$」の使い方です。 いわゆる「セレクター」。 これが: document.getElementById('foobar').innerHTML = '<hr>'; こう書けます: $('foobar').innerHTML = '<hr>'; いちいち JavaScript フレームワークを用いずにサクッとやるとき用ですね。

    JavaScript のセレクターの定番イディオム
    iww
    iww 2010/09/01
    何もなしで$()を使う方法