JavaScript

XMLHttpRequestオブジェクトでリダイレクトをハンドリングする方法

以前に、同じタイトルのエントリを書いたのですが、それよりもスマートなやり方がわかったので、書いておきます。やりたいことについては前のエントリで書いたとおり。 XMLHttpRequestで送ったリクエストが、サーバで認証エラー(セッションタイムアウトなど…

JavaScriptでブラウザの判別(各種JavaScriptライブラリの判定方法を抜粋)

JavaScriptのライブラリを使わずに開発しているときに、ブラウザの判定をするのって意外と悩むので、調べた結果をまとめておきます。Prototype.js、JQuery、MooTools、Dojo について調べました。●Prototype.js の場合 Browser: { IE: !!(window.attachEvent …

IEでFunction.prototype.extendsというプロパティが使えない。

JavaScriptで継承を実現するために、 Function.prototype.extends = function(superObj) { for (var prop in superObj) this.prototype[prop] = superObj[prop]; }; このようなメソッドを作ってました。FireFoxで開発している分には全く問題なく動作していた…

XMLHttpRequestオブジェクトでRedirectをハンドリングするには?(リダイレクトを拾う方法)

XMLHttpRequestオブジェクトから送信したリクエストに対し、サーバがリダイレクト応答(ステータスコード=302)を返したときのハンドリングってどうやればいいんだろうか?と悩んだのでその記録。解決したかったのは、以下のような問題。 XMLHttpRequestで送…

静的HTMLで、インクルードを実現するためのJavaScript

ローカルディスク上に存在する静的HTMLで、外部ファイルをインクルードするためのスクリプト(つまり、XMLHttpRequestオブジェクトの代わり)。以前にも同じようなエントリを書いたのですが(http://d.hatena.ne.jp/kenpoco/20080228/1204198090)、いくつか…

Javascriptでフォーカスを移動させないようにする方法

ブラウザ(FireFox)上での書式チェックエラーのときに、次の項目にフォーカスを移動させないようにする方法。簡単にできると思ったら意外と苦戦(IE6のときは簡単にできたような気がするのだが)。 <input type="text" onblur="if (any expression) { this.focus(); return false; }" />上記コードは、まず最初に思いついたものなのですが、これだ…

IE7でスクロール量を取得する

最近、会社用のPCのブラウザをやっとIE7にあげたのですが、「スクロールした量が取得できない」という問題にぶつかりました。既知の問題なので、 IE7において座標が正しく取得出来なくなった件 などに詳しく解説がありました。上記のサイトでは、IE6とIE7で…

JavaScriptのyieldを使ってイテレータを作りたいのだが

JavaScript1.7の yield 文を使ってイテレータを作りたいのだが、ジェネレータの中からは this が参照できないみたいで悩む。理由はなんとなくわかるけど、結局、解決策はわからず。 Array.prototype.iterator = (function() { for (i = 0; i yield this[i]; …

JavaScript に void 演算子というものを発見

変数 a があったときに、a を評価させない演算子。 b = void(true) ? true: false;上記のように書いた場合、b には false が入るようだ。実用的な使い方としては、 <a href="javascript:document.forms[0].foo.value = '1';" >リンク</a>というなことをしたいときに、このままだと '1' に遷移してしまうので、 <a href="javascript:void(document.forms[0].foo.value = '1');" >リンク</a>こうし…

JavaScriptを使ってHTMLのインクルードを実現しつつ、JSPでもインクルードできる方法

先のエントリにJSP版。これはあまりいけてないなあ。 ●呼び出しイメージ <script type="text/javascript" >//<% include("a.txt",request,response); //%> </script> ●スクリプト本体 <script type="text/javascript" >var request; // ←スクリプトエラーとならないように宣言 var response; function include(filename) { include.seq …

JavaScriptを使ってHTMLのインクルードを実現しつつ、PHPでもインクルードできる方法

先のエントリを書きながら、そのままPHPのインクルードと併用できる書き方を思いつきました。 <script type="text/javascript">// こうしておけば、ブラウザで読み込んだときはJavaScriptとして動くし、サーバで動かすときはPHPのインクルードとして動く。これはもっと応用できるんじゃなか…

JavaScriptを使ってHTMLのインクルードを実現する方法

純粋なHTMLだけでインクルードを実現するためのスクリプト。 自分の環境でちょっと試した限りではちゃんと動いてそう。 ■呼び出しイメージ <tr><td> include("foo.txt"); ←これだけ </td></tr> ■出力用JavaScriptfunction include(filename) { include.seq = (include.seq)? in…