タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

JavaScriptとtipsとjavascriptに関するhysaのブックマーク (35)

  • 驚きいっぱいのJavaScript? - 風と宇宙とプログラム

    言語やインタフェースの設計には「驚き最小の原則」というのがある。まつもとさん人はそんなこと言っていないようだが、かつて、Rubyはその原則に沿った言語と言われていた。一方、JavaScriptはそれに反する言語と未だに見なされているようだ。多くの場合、よく理解していないのが原因である。理解した上でも、やっぱりおかしいよ、というのもあるかも知れないが、じゃ、その場合どう定義したらよいんだ、というのはいろいろ難しい問題がある。 wtfjs(http://wtfjs.com/)にはJavaScriptのそんな「変な挙動」が集められている。wtfなんてタイトルをつけているくらいなので、あまり真面目に見る必要はないのかも知れないけれど、主なものについて古い順から軽く解説してみた。ちなみに、wtfはWhat The F*ckの略。 typeof NaN === 'number' // true In

    驚きいっぱいのJavaScript? - 風と宇宙とプログラム
  • DOM Elementオブジェクトをテキストダンプしてデバッグ - hogehoge @teramako

    DOM APIを使用して作ったDOMツリー、うまく生成されているか見てみたい事は多々ある。少なくともオイラはある。簡単にテキスト表示してくれると嬉しいなぁと常々思っていたのだが発見した。 Firefox(というかMozilla系かな)限定だろうけどXMLSerializerがあるのだ。 使い方は簡単。 var serializer = new XMLSerializer(); //略 var root = document.createElement('div'); var anchor = document.createElement('a'); var aText = document.createTextNode('はてな'); anchor.setAttribute('href','http://www.hatena.ne.jp/'); anchor.appendChild( aT

    DOM Elementオブジェクトをテキストダンプしてデバッグ - hogehoge @teramako
    hysa
    hysa 2010/02/26
    XMLSerializer,DOMParserを使う。
  • Firebugで元のJavaScriptのコードに手を入れずにdebug用のconsole出力を入れる方法 - monjudoh’s diary

    Firebugでは条件付きブレークポイントが使えるので、 scriptタブにて該当行にブレークポイントを貼り、 条件としてconsoleへの出力を||区切りで、最後に&& falseを入れる。 console.debug('this.lastPosition') || console.dir(this.lastPosition) && false こうするとブレークポイントを通る度にconsoleへの出力は評価され、 consoleに出力され、最後の&& falseのため式全体は必ずfalseとして評価されるため ブレークすることはない。 追記 console出力系関数の戻り値はundefinedなんだから&& falseは不要か 追記 nanto_vi @monjudoh JSでは||より&&の方が優先順位が高いので、a || b && c はaが真ならbもcも評価されずに全体が真として

    Firebugで元のJavaScriptのコードに手を入れずにdebug用のconsole出力を入れる方法 - monjudoh’s diary
    hysa
    hysa 2010/02/24
    条件付きブレークポイントにconsole.debug('this.lastPosition'),console.dir(this.lastPosition)を入れる
  • handleEvent、addEventListener - 素人がプログラミングを勉強していたブログ

    addEventListenerの第二引数は、関数以外にも、handleEventをメソッドとして持ったオブジェクトも渡すことが出来る。 window.addEventListener("click", { handleEvent: function (e) { console.log(e); } }, false); また、この仕様を利用すると、 ({ run: function () { window.addEventListener("click", this, false); this.counter = 0; }, handleEvent: function () { this.counter++ if (this.counter < 3) alert(this.counter + "clicked!"); else this.destroy(); }, destroy: fun

    handleEvent、addEventListener - 素人がプログラミングを勉強していたブログ
    hysa
    hysa 2010/01/22
    "addEventListenerの第二引数は、関数以外にも、handleEventをメソッドとして持ったオブジェクトも渡すことが出来る。"
  • Array.concatで配列のクローン(コピー)を作成する - latest log

    JavaScriptで配列のクローンを作成しようとして、悩んでいる方もいらっしゃるようですが、 以下のように、for ループや再帰なコードを手書きする必要はなくて、Array.concat() で配列のクローンは作成できます。 Array.prototype.clone = function(){ return Array.apply(null,this) } Array.prototype.clone = function() { if ( this[0].constructor == Array ) { var ar, n; ar = new Array( this.length ); for ( n = 0; n < ar.length; n++ ) { ar[n] = this[n].clone(); } return ar; } return Array.apply( null,

    Array.concatで配列のクローン(コピー)を作成する - latest log
    hysa
    hysa 2010/01/18
    Array#cloneの実装方法。Array#concatを使う。
  • javascript - お伺い - Object.prototype.clone() : 404 Blog Not Found

    2007年11月26日23:45 カテゴリLightweight Languages javascript - お伺い - Object.prototype.clone() JavaScriptでオブジェクトのディープコピーをどうやってやるのか、これといったものがないようなので作ってCodeReposにおいておきました。 /lang/javascript/clone/trunk/clone.js - CodeRepos::Share - Trac なぜこういうのが必要かというと、 var a = [0,1,2,3]; alert(a); // 0,1,2,3 var a2 = a; a2[4] = 4; // a2を変えると... alert(a2); // 0,1,2,3,4 -- aも変わってしまう! からです。参照でオブジェクトを実装しているものにはJavaScriptでなくてもこう

    javascript - お伺い - Object.prototype.clone() : 404 Blog Not Found
    hysa
    hysa 2009/12/09
    Objectのdeep copy
  • John Resig - Simple “Class” Instantiation

    This is another trick that I’ve been using for a while to simplify Class-style instantiation of a function in JavaScript. Take a look at the following code, for example: function User(first, last){ this.name = first + " " + last; } var user = new User("John", "Resig"); Pretty straight-forward. Now let’s look at a couple quirks of Class-style instantiation that can cause issues, but can be easily r

    hysa
    hysa 2009/10/15
    newを使わないコンストラクタ
  • Googleのトップページを開くと毎秒100回実行されるスクリプトを止めるユーザースクリプト - os0x.blog

    Googleのトップページを開くと毎秒100回JavaScriptが実行されるよ - 射撃しつつ前転をみて、ちょっとソース読んでみたらホントにそんな実装になっていた。んじゃ、止めちゃいますかってことで、サジェスト自体はそのまま機能させつつ、IMEでの確定前の入力には反応しないという実装に無理やり変えるスクリプトを書きました。一応動作を確認したのはFirefox3.5(Greasemokey 0.8)、Opera10、Google Chrome Dev(4.0.213.1)です。GreaseKitは実行タイミングの問題で怪しいかも。 404 Not Found – Userscripts.org ちなみに、なんでGoogleはポーリングをしているかっていうと、IMEが確定する前の入力途中のキーワードを捕まえるためのようです。そこまでする必要ないよって人も多そうですよね。そういう人向けのスクリ

    Googleのトップページを開くと毎秒100回実行されるスクリプトを止めるユーザースクリプト - os0x.blog
    hysa
    hysa 2009/10/05
    "window.setIntervalを上書きしてダミーのなにもしない関数に置き換え、"
  • Kanasan.JS JavaScript 第 5 版読書会 #8: Days on the Moon

    Kanasan.JS JavaScript 第 5 版読書会 #8 に行ってきました。今回は初めての京都での開催、それも町家でという風情あふれる読書会。真夏真冬はちょっとつらいかもしれませんが、春秋はこういった場所での勉強会というのも乙なものですね。名古屋の DeLLa.JS では茶室での開催もあったそうでうらやましいことです。 ちなみに会場「お結び庵」の運営は home's vi ("h" を抜くと「おむすび」) という法人によるものだそうで。なんとなく名前に親近感を感じてしまうのは気のせいでしょうか。 読書範囲は「17.5 キーイベント」から「18章 フォームとフォーム要素」まで。ブラウザごとに変な癖があるということが少なく (完全にばらばらか結構統一されているか)、さくさくと読めました。 キーボードショートカット サイでは、Web アプリケーションはキーボードショートカットをサポー

    hysa
    hysa 2009/10/02
    "ただし、IE 7 以下では name 属性も id 属性と同じ名前空間に入ってくる "
  • JavaScript1.7 の yield を使って、非同期処理を同期処理のように書く方法 - IT戦記

    経緯 id:kazuhooku さんが一年前にやってたことですが Kazuho@Cybozu Labs: JavaScript/1.7 で協調的マルチスレッド 今日やっと挙動が理解できたのと、 Weave のソースを読んでいたらこのテクニックをバリバリ使っていて「ちょwwおまwww」ってなったので、自分でも作ってみようと思いました。 ほとんど id:kazuhooku さんのと同じものなので、既出です><当にありがとうございました>< まず、 yield とは何か yield とは、 JavaScript 1.7 から導入された機能です。 以下に yield の細かい挙動を示しておきます。 function f() { // なんかの処理 yield; // ... (1) // なんかの処理 yield; // ... (2) // なんかの処理 } var g = f(); // こ

    JavaScript1.7 の yield を使って、非同期処理を同期処理のように書く方法 - IT戦記
    hysa
    hysa 2009/08/30
    javascript1.7 yield
  • 理由がない限り、Array.join("") による文字列連結は使わないほうがいいみたい - latest log

    JavaScript の勉強を開始したときに「文字列の連結には Array.join() を使え」といった記事を見た覚えがあります(ソース失念したけど、 Operaの技術文書だった気がする ⇒ IE の技術文書だったかも)。 一年ほど信じてて、念のためベンチとってみたら「うそやーん」でした。ってお話。 ベンチの条件は、 3種類の文字列連結方法を試す 1. + Operator 2. String.concat() 3. Array.join("") 文字列の要素数を 11個 と 55個で試す <!doctype html><html><head><title></title> </head><body> <script> window.onload = function() { var now = +new Date, lp = 100; while (lp--) { job(); } d

    理由がない限り、Array.join("") による文字列連結は使わないほうがいいみたい - latest log
  • XPathとSelectorsAPIとgetElementsBy〜の使い分け - 素人がプログラミングを勉強していたブログ

    微妙に役割の被っている、document.evaluateとSelectorsAPIを、どう使い分けるかという話。 僕は最近、 タグ名、クラス名、idで一発で取得できる場合は速度のためにgetElements系のものを使う。 XPathでできて、SelectorsAPIでできない時は、XPathを使う。 XPathでもSelectorsAPIでも出来るときは、特別な理由がない限りSelectorsAPIを使う。 のような感じで使い分けている。 クラス名を扱う時はSelectorsAPIを使う。 例えば、はてなキーワードを普通のリンクにするJavaScriptは、XPathを使うと var keywords = document.evaluate("descendant::a[contains(concat(' ',@class,' '),'keyword') or contains(con

    XPathとSelectorsAPIとgetElementsBy〜の使い分け - 素人がプログラミングを勉強していたブログ
    hysa
    hysa 2009/08/10
    getElementsByとquerySelectorAllとevaluateの使い分け。
  • ページサイズやスクロール位置を取得する - Archiva

    Make a note of it: Web tech, montaineering, and so on. Note: この記事は、3年以上前に書かれています。Webの進化は速い!情報の正確性は自己責任で判断してください。 現在位置を取得するときのの基準となる、ウィンドウ・サイズ、ドキュメント・サイズ、スクロール量を取得するJavascript。ブラウザ互換とかで割りと苦労しました。 スクロール量(横): スクロール量(縦): ウィンドウ・サイズ(横): ウィンドウ・サイズ(縦): ウィンドウの中央位置(横): ウィンドウの中央位置(縦): ドキュメント・サイズ(横): ドキュメント・サイズ(縦): 以下にソースを出します。 スクロール量を取得 function getScrollPosition() { var obj = new Object(); obj.x = document.

    hysa
    hysa 2009/08/09
    スクロール位置
  • それすぐ実行!JavaScript! - IT戦記

    思った JavaScript はすぐに実行してみましょう! ブラウザの URL 入力欄に javascript:(function() { /*実行したいコードを書く*/ })()FireBug を使ってる人は、コンソール開いて実行したいコードを書く。 たとえばこんなことができます。 これらの例は僕が日頃使っているものです。 グローバルで使える関数を列挙する(Firefox Only) FireBug用 for(var n in window) if(typeof window[n]=='function')console.log(n); URL用 javascript:(function(){var b='';for(var n in window)if(typeof window[n]=='function')b+=n+"\n";alert(b)})() Object.prototyp

    それすぐ実行!JavaScript! - IT戦記
  • JavaScriptでCSSとイベントを扱う from Kanasan.JS | Blog.37to.net

    最終更新日 Sun, 19 Apr 2009 20:27:25 +0900 最後のコメント Mon, 14 Jul 2014 08:14:00 +0900 ブックマーク 先日開催された、Kanasan.JS JavaScript第五版読書会#7のレポートです。 今回はCSSとイベント処理の入門的内容でした。 ご参加頂いた皆様、ありがとうございました。 JavaScriptからCSSを扱う それ程難しくはないので、簡単にまとめておきます。 はまりがちな事 Element.style.colorなど、Element.style.〜のスタイルオブジェクトで操作出来るのは、 インライン指定されたスタイルのみなので気を付ける必要があります。 僕も最初の頃は知らずによく間違えていたのですが、これを知っていると無駄に時間を使わなくて済むと思います。 <style> #foo { background-c

    hysa
    hysa 2009/07/18
    『Element.style.~のスタイルオブジェクトで操作出来るのは、 インライン指定されたスタイルのみなので気を付ける必要があります。』