twitter の id:ZIGOROu と id:ku0522 の会話で $x の第 2 引数コンテキストノード指定出来たらいいよねーって話しがあって 作ろうと思って 作ったら id:os0x さんが先に作ってて http://d.hatena.ne.jp/os0x/20071213/1197515856 実装もほとんど同じだったので凹みつつ まあ、もったいないので晒そうとか思った。 で 今回は「チョコチョコいじれる化」しないでやる方法でやってみましょう。 題して 「拡張機能内に自分用の拡張空間を作っとく化」略して「カクカク化」 カクカク化で Firebug を拡張する手順は以下のようになります。 Firebug の拡張機能用のディレクトリに行く 環境 Firebug の拡張機能用のディレクトリ WinVista C:\Users\[ユーザ名]\AppData\Roaming\Mozil
追記:早速破られた! safeCall("var w=(function(){return this;}).call();w.alert(w.document.cookie);"); id:kazuhooku - http://b.hatena.ne.jp/kazuhooku/20071206#bookmark-6709542 サイ本よく見ると確かに「オブジェクトのメソッドとして呼び出された関数内でも、入れ子にされた関数内のthisはグローバルオブジェクトを参照します」て書いてあった。あとMDCにも http://developer.mozilla.org/ja/docs/Core_JavaScript_1.5_Reference:Operators:Special_Operators:this_Operator ========= 面白い記事があった、Greasemonkeyのunsaf
まず、以下のような package 関数を作る。 function package(name) { package.__hash__ = package.__hash__ || {}; if (!package.__hash__.hasOwnProperty(name)) { package.__hash__[name] = { def: function(name, value) { return this[name] = value; } } } return package.__hash__[name] } で、こんな感じで使う // ここは hoge の名前空間 with (package('hoge')) { def('var0', 1); // 変数は def 関数で定義 def('var2', 2); alert(var0); // 1 alert(var2); // 2 }
特定のscript中に含まれるdocument.writeを上書きして、遅延描画にすることができます。 document.writeを使う広告配信スクリプトや、ブログパーツなどの挙動を置き換えることが出来ます。 外部サーバーから読み込むスクリプトをページ最後部に記述することでページレンダリングを妨げなくなります。 このページはこんな感じになってます。 var adsense_url = 'http://pagead2.googlesyndication.com/pagead/show_ads.js'; document.lazy_writer(adsense_url, function(str){ var id = "adsense_" + this.script_count; document.getElementById(id).innerHTML = str; }, {delay :
僕にも教える人ができた(? というか人にモノを教える立場)になったので、とりあえず、最近はもっぱらjavascriptを教えています。 もともとCやJavaなどについてはある程度の知識がある人なので、それを少しjs的な意味で、関数言語的な教えをやっている最中のメモ 変数って何ですか?変数って値もしくは式そのものに利便的な名前をつけているものです 次のhogeとfooは値をいれる箱ではなく、値そのものに別名(もしくは分かりやすい名称)を割り当てているだけに過ぎませんよ。 var hoge = 1; var foo = [1, 2, 3]; alert(hoge + 1); // 2 alert(foo[0]); // 1 alert(1 + 1); // 2 alert([1, 2, 3][0]); // 1 つまり、関数自体を変数に代入する事ができます。(functionとは特別な呼び名
http://blog.livedoor.jp/dankogai/archives/50957890.html まず、Object.prototypeにメソッドを生やしてしまうとfor inでキーを列挙するときにいちいちhasOwnPropertyを使わないといけなくなるので普通は使いません。影響が大きすぎるので、よっぽど変態的なライブラリじゃないと使わない。他のライブラリと組み合わせるとほぼ確実に問題が起きる。それから、deep_cloneが欲しい場合はJSONを作ってevalすればよい。パフォーマンスを気にする場合とか、浅いコピーが必要な場合はそれなりに工夫する必要があるけど。 で、JSONにするのにFirefoxだとtoSourceというのが使える。unevalというラッパーがあって、これだとnullでも平気。 http://subtech.g.hatena.ne.jp/cho45/
[追記]id:zorioさんのブックマークコメントの指摘により、抜けていた「.apply」を挿入しました。[/追記] JavaScriptで、大域変数(大域オブジェクトのプロパティ)fooが存在しないときに何かをしたいとしましょう。例えば、こんな書き方をしますよね。 if (!foo) { // 何か } でも、式 !foo は、fooがnullでもfalseでも0でもtrueに評価されます。 if (foo == undefined) { // 何か }としたほうがよさそうです。が、null == undefined もtrueとなるのであまり改善されてません。 if (foo === undefined) { // 何か }イコールが3つなら、厳密に「fooが未定義値であるとき」を表現します。ここで、undefinedはリテラルではなくて、仕様として事前に定義されている大域変数です。u
ということで、今回はJavaScriptのパターンマッチネタです。 比較するメソッドとしてmatch、search、test、exec、の4つを取り上げます。 それぞれ性質が異なるので、使う場合は注意が必要です。 比較のために、以下のようなサンプルを作ってみました。 <script type="text/javascript"> <!-- // match()の場合 function hoge1() { base_str = "オッス。おら Tawabagani。" + "友人の Abeshiganiと間違えないでくれよな。"; match_pattern = /\w+?gani/g; r = base_str.match(match_pattern); if (r) { for(var i=0; i<r.length; i++) { alert(r[i]); } } else { al
This domain may be for sale!
「あなたのページを最速にする14の掟」と「High Performance Web Sites」のこと || パフォーマンス・チューニングBlog: インターオフィス これ(もしくは原文)を読んだことのある人は多いと思うけれども、どうも「Move JS to the bottom」がまだまだ普及していないように思う。 何を速くするべきかを考えるならばscriptタグを下に持ってゆくことこそまずやるべきだと思う。 ユーザーが体感する速度で重要視されるのは何だろうか。自分としてはまず描画することが何よりも重要だと思う。特に検索エンジン等から初めて訪れた人は、どんな色でどんなロゴで何ができるサイトなのか、というようなことを無意識に心待ちにしていることだろう。そんな中でheadタグ内でscriptの読み込みをしている時間というのはとんでもないロスではないだろうか。描画しないと何も判断できないのだか
いちいち個別の filter スクリプトに AutoPagerize 対応入れるのもなんかなと思ったから、ちょっと書いてみた。 こういうの userscripts.org に上げた方がいいのかな? // ==UserScript== // @name Filterize // @namespace http://d.hatena.ne.jp/send/ // @description apply filter on any site. // @include * // ==/UserScript== (function () { var FilterContainer = function() { this.__container = {}; this.addFilter = function(name,func) { this.__container[name] = func; retu
12 月中にプレゼンテーションツール S6 を公開しようと考えていますが、ライセンスは MIT ライセンスにしようと考えています。 ということで、今まで作った以下のプレゼンにから読み込まれている s6.js ファイルのライセンスはすべて MIT ライセンスということにします。 http://amachang.art-code.org/pr/ http://amachang.art-code.org/shibuyajs24/ http://amachang.art-code.org/ejohn/ これから、たくさんの人が S6 に参加しやすいようにコードのリファクタリングや、テストの自動化などを行っていく予定です。 よろしくお願いします。
Tags: javascript xpath yahoo yui | Date: 2007-11-18T18:39:24+09:00 | Comments: 3 | Trackbacks: 0 TODO をオープンソース - IT戦記 を見て、優先順位低すぎやなと思いつつ、前回 に引き続き考察する。YUI 自体をいじるのはちょっとまずいのかなと思ったので、名前空間を作って JavaScript-XPath をラッピングしてみた。
S10 Web2.0 Technology 2007年11月15日(木) 16:35 - 17:20 JavaScript Labs: Ajax&RIA・リッチJSアプリの最新技術と今後の展望 Ajaxを契機とした近年のリッチクライアント・RIAブームの中で、JavaScriptが改めて脚光を浴びています。PCブラウザに限らずPDA・モバイル端末・ゲーム機でも動作する実行環境としてのJavaScriptと、またLightWeightな開発言語としてのJavaScriptに再注目し、「JavaScriptでもここまでできる!」ことを実際に動くコードで証明します。 XPath、jQuery、Tamarin、JavaScript 2などの最新トピックを交えつつ、今後の可能性や展望について第一線で活躍するJavaScriptエンジニア3名が詳しく解説します。 天野 仁史 Shibuya.JS所属の
JavaScript-XPath とは JavaScript-XPath は、 DOM 3 XPath を実装していないブラウザに対して、実用的な速度で動作する DOM 3 XPath のエンジンを追加します。 一言で乱暴に言ってしまえば、どのブラウザでも document.evaluate って関数で XPath 使えるようになるよ!ってことです。 以下が公式サイトになります。 http://coderepos.org/share/wiki/JavaScript-XPath DOM 3 XPath ってなんなの!? めっちゃ簡単(で、ちょっとだけ適当)なDOM 3 XPath の説明をします><。 JavaScript でよく使う document.getElementById や document.getElementsByTagName って関数ありますよね? DOM 3 XPath
for 文で 100 項目とか 1000 項目とかあるテストケースを処理するとブラウザが固まる。 こんなダイアログが表示されます。 ということで for 文を setTimeout や setInterval に変換する事で定期的にブラウザに処理を戻すことができる。 // ここでは console.log のところでログを取ってますが // 通常は処理が入ります。 for (var i = 0; i < 3; i ++) { console.log('a' + i); } /* * 結果 * a0 * a1 * a2 */ これをまず while 文に変換 var i = 0; while (true) { if (!(i < 3)) break; console.log('a' + i); i ++; } /* * 結果 * a0 * a1 * a2 */ で、 setTimeout に
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く