10月
04
2011
2

複数のバージョンの jQuery を共存させる方法

古いアプリをメンテしてて、元々の jQuery のバージョンが 1.0 だの 1.1 だのだとすごく残念な気持ちになりますね。やっぱり、最新の jQuery でサクサク書きたいものです。
バージョンを上げてしまえればいいんですが、動作確認の手間まで考えると、そこまでやる時間もない。いま、ちょっとこの画面だけ手直し出来ればいいんだけど…という場合は、複数のバージョンの jQuery を共存させてしまいましょう。

jQuery には $ の競合を避けるための jQuery.noConflict という function が用意されていますが、これに引数で true を渡すと、window.jQuery オブジェクトの競合も避けるように動作します。

ですので以下のように書けば、複数のバージョンの jQuery が共存出来ます。
現実的にやる事はないと思いますが、onload を追加する事で、3つでも 4 つでも共存可能という事です。

<script>
$(function() {
    var func = function() {
        // 実際に動作させたい部分
        var $16 = jQuery.noConflict(true);
        alert($.fn.jquery);  // old version
        alert($16.fn.jquery);  // ver 1.6
    }
    // 使いたいバージョンの jQuery を用意し、load イベントを設定
    var s = $('<script>').attr('src', 'http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js').load(func).get(0);
    // IE の場合は script の onload が発生しないので onreadystatechange で検知
    s.onreadystatechange = function() {
        if (this.readyState == 'loaded' || this.readyState == 'complete') {
            func();
        }
    }
    // jQuery.append だと load イベントが発生しない(?)ようなので、生 DOM で head に script を追加
    $('head').get(0).appendChild(s);
});
</script>
Written by Otchy in: Development | タグ: ,
8月
31
2011
2

TwitMgr Ver.2.0.0 をリリース

Twitter API の仕様変更により動作しなくなっていた TwitMgr をフルスクラッチで書き直して Ver.2.0.0 としてリリースしました。

Ver.2 を名乗る割に、機能的には Ver.1 を踏襲しただけというのが残念ではありますが、適宜先読みを行ったり、取得したデータをキャッシュする事で、従来版よりキビキビと動くようになっています。
その分、メモリの消費は増えているのですが、昨今のトレンドに沿った修正ですし問題ないと思っています。

デザインに関しては、HTML5 / CSS3 の構成で作っています。最近、個人でサイトを作る時は全力で IE を無視するので、HTML5 / CSS3 の機能を存分に使えて気持ちいいです。

今回、webkit に限ってですが、transition を初めて使ってみました。これ、これまで食わず嫌いで使ってなかったのを後悔しましたよ。「あっても無くても機能には支障ないけど、あるとちょっと嬉しいワンポイントアニメ」とかが、楽に表現出来ます。
散々言われていた事ですが、自分で使ってみて初めて本当に理解するっていう感じです。

それと、CSS3 を使い込んで頑張ってみたのがツールバー&タブのデザイン。

これを画像無しに表現出来るようになるとは驚きです。
ツールバー部分だけを抜き出してみれば、マークアップもシンプルです。

<h3 class="tab selected">フォローしている</h3>
<h3 class="tab ">フォローされている</h3>
<div class="toolbar"></div>

最近の Web デザイン系の記事に触発されて 1px のラインを入れてみたりしてます。
この CSS だけ取り出しても面白いかと思うので、そこはまた別の記事におこします。

最後に、ソーシャル系のボタンとして、はてブ・Twitter・Facebook を付けてみました。
それぞれ公式のスクリプトを生成して貼り付けた感じですが、はてブと Facebook は URL とかページタイトルの指定が固定で入るような形だったので、そこは動的に取るようにしています。

その点、Twitter のボタンはどんなページでも共通のスクリプトを貼り付けるだけでよいので楽ですね。一方、「このサイトのボタンは、どんなページにあってもサイトのトップに対するボタンにしたい」ってのが Twitter だとできないです。
まあ、プロモーション上、サイトのトップにソーシャルのアクセスを集中させたい気持ちは分からないではないんですが、ユーザは「今見てるページ」をブクマしたかったり「いいね!」したかったりすると思うので、そういうのは避けたいです。

さて、せっかく TwitMgr 自体を綺麗に書き直したので、今後は少し機能拡張もやろうと思ってます。
初代 TwitMgr リリース時点では機能が存在していなかったリストへの対応とスパム報告への対応が当面の目標です。
この 2 つは、いま自分で TwitMgr を使うにあたって欲しいと思ってる機能なので、確実に実現させると思います。
その他にも何かフィードバックがあれば、是非教えて下さい。

Written by Otchy in: Development | タグ: ,
8月
26
2011
2

TwitAPI.js Ver.0.2.0 リリース/taj-proxy build5 リリース

JavaScript から気軽に Twitter API を利用するためのライブラリ、TwitAPI.js の Ver.0.2.0 をリリースしました。
TwitAPI.js はその仕組み上、プロキシサーバを経由して Twitter API にアクセスしているのですが、メソッドが GET で認証不要な API の場合、Twitter API を直接 JSONP で利用する事が出来るので、それを可能にするアップデートです。

また同時に、TwitAPI.js 用プロキシサーバである taj-proxy も、build 5 を公開しています。
これは、TwitAPI.js 本体の更新とは関係なくて、従来、Twitter API にアクセスする URL として固定で https://twitter.com/… となっていたのを、現在の正しいドメインである、https://api.twitter.com/… に変更したという対応です。
これをしないと最新の API が利用出来ずに困った事になっていました。

しばらく放置していたのですが、最近ちょっと時間が出来て TwitMgr のリライトを再開出来たので、それに合わせたアップデートになります。

というわけで次は TwitMgr の新バージョンを報告出来るといいのですが、それはまだ先の話。

Written by Otchy in: Development | タグ: ,
8月
22
2011
2

Greasemonkey をインストールせずに試すブックマークレット

Gresemonkey (など) のスクリプトをインストールすることなく任意のサイトでちょこっと試すためのブックマークレット。
起動すると、user.js の URL を聞いてくるので、入力すると今開いているページにそのスクリプトを読み込みます。
単にその user.js をそのページに追加するだけの単純な仕組みなので、GM_* 等への対応はありません。

任意のサイトを対象とした user.js を書くにあたって、自分のテストを楽にするために書きました。

GM Test

javascript:(function(d){var%20a=prompt('Enter%20script%20URL.');if(a){var%20s=d.createElement('script');s.src=a;d.getElementsByTagName('head')[0].appendChild(s);}})(document);
Written by Otchy in: Development | タグ: , ,
7月
22
2011
2

GoogleFloatingForm Ver.1.1.0 を公開

現在の Google の SERPs に対応した GoogleFloatingForm を公開しました。
検索結果をスクロールしても検索窓がついてくるっていう例のアレです。

旧版までは、アニメーションとか使ってそれらしく見せていたんですが、今バージョンからは単に position:fixed で固定しています。Google のデザインがどんどんシンプルになっていくので、それに合わせたというか、ぶっちゃけていうと DOM が大きく変わったのでそれに追随するのが面倒だったというか。

なので実装としては、動的に CSS を追加しているだけなので、そんなんユーザスタイルシートとかでやれよ、ってのはごもっともな指摘ですが、まあ誰でもワンクリックで適用出来るっていうメリットが大きいのでいいのです。

ところで、ずっと Chrome で動作確認していて、使いながらバグを取ってそろそろいいかな、と思ったので公開に踏み切ったわけですが、最後に Firefox で確認してみるとこれが予想以上にぼろぼろでした。
position: fixed の挙動に関して、そんなに違いがあるんでしょうかね?

SERPs の DOM の入れ子の状態が、見た目から予測される入れ子と大きく違っていたせいで、色々と position をいじり倒しているせいかもしれません。
なので、Firefox の方はごめんなさい。上手く動いてません。

Written by Otchy in: Development | タグ: ,

Powered by WordPress | Aeros Theme | TheBuckmaker.com