クロスブラウザスクリプティング用の「シン」JavaScript フレームワーク?

StackOverflow https://stackoverflow.com/questions/3400762

質問

実装の違いを平準化することで JavaScript を拡張することに重点を置いた JavaScript フレームワークはありますか?単に異なるブラウザ間で同じ機能を提供するフレームワークのことではなく、標準以外のブラウザを標準に準拠しているかのように動作させるフレームワークのことを指します。

基本的にJavaScript用に何かをしたいのですが、 ie7.js MSIEか何かのためにするのか html5shiv HTML5 要素の場合に実行されます。または、Web Sockets または Canvas のさまざまな回避策。

jQuery とその類似品がそのトリックを行うことができると思いますが、私は書くことができるものの方が良いと思います。 普通, 、ブラウザ間に違いがないかのように、標準に準拠した JavaScript を使用できます。

編集:他のすべての回答が、はい、jQuery は JavaScript であり、ほとんどの JavaScript フレームワークはブラウザ間の互換性を向上させようとしている、と指摘しているようですが、私が何を意味するのかを明確にさせてください。

最近では、ブラウザごとの JavaScript 実装の違いは、言語自体とはあまり関係がありません。古いブラウザーにはないいくつかの組み込みメソッドを除けば、型もほとんど同じように動作します。しかし、特に現状 (Chrome/Firefox/Safari) と MSIE のレガシー バージョン (つまり、MSIE 7)。最も注目すべき点は、DOM はその API に多かれ少なかれ微妙な特殊性を持つ傾向があることです。

ほとんどのブラウザーで動作する JavaScript を記述できるフレームワークだけが欲しいわけではありません。それらは10セントです。最新のブラウザーと従来のブラウザーの両方で動作するコードを作成できる薄いレイヤーが必要です。jQuery、Dojo などはすべて、それをはるかに超えて、既存の API を統合するのではなく、独自の独自の API を提供します。

「jQuery を使用してください」と言うのは、「jQuery を使用する必要がある」と言っているのと同じです Rich Ajax Platform (または他のコード生成フレームワーク) ブラウザー間でのレンダリングの違いを回避したい場合。私は「代替品」が欲しいのではなく、「バグ修正」が欲しいのです(文字通りではありません)。

編集2:要点を家に伝えるために:私はただのフレームワークを探しているわけではありません。私は jQuery に精通しており、YUI を試したことがあり、現在 Dojo を試してみることを検討しています。私は単に「良い」フレームワークを望んでいるわけではありません。私の非常に具体的な説明に適合するものが欲しいです。似たようなものが存在しなくても問題ありませんが、なぜ存在しないのかを知るのは興味深いでしょう (つまり、技術的な理由であり、「誰もが jQuery を使用するのに忙しすぎる」ということではありません)。

役に立ちましたか?

解決

この質問がされてから長い時間が経過しましたが、おそらく誰かの役に立つでしょう。最近、Financial Times の開発者のグループが、さまざまなブラウザーに必要な部分にのみパッチを適用する、一種のユニバーサル ポリフィルをセットアップしました。 http://cdn.polyfill.io/v1/docs/

他のヒント

あなたの投稿が示唆するように、あなたの思考でミニマルなようであれば、

、あなたはattachEvent対addEventListenerを、getTagsByClassName対のように、ほとんどの場合、迷惑な相違の一部についてクロスブラウザの機能を提供し、独自のマイクロライブラリをコンパイルしてみてくださいいいえ方法は、実際のDOMとにかく方法、および、リスト内の格差あるほとんどのJavascriptの格差のスクロール格差、窓の大きさなどは、長い間に、一度にすべてをコンパイルする必要はありません。彼らはあなたのコーディングに出てくるよう、独自のクロスブラウザの機能を追加します。

そのショート、jQueryのを使用します。

すべてのJavaScriptライブラリを使用すると、クリーンクロスブラウザ互換のJavaScriptコードを記述できるようにすることで、「レベル競技場」にしようとします。

最も人気のいくつか:

プロトタイプ

MooToolsの

Scriptaculousの

jQueryのの(私の個人的な好み)

あなたが望んでいることを正確に達成する可能性はありません。IE は DOM ノードのプロトタイプを公開しないため、個々のノードごとに拡張する以外に DOM ノードを拡張する方法はありません。また、IE では通常 (おそらく常に?)、DOM ノードなどのホスト オブジェクトの既存の読み取り専用プロパティを上書きすることはできないため、DOM ノード自体に誤って実装された DOM プロパティを修正することはできません。DOM メソッドを修正しただけであっても、新しいノード参照を取得するたびにこれを行う関数を呼び出す必要があります。

var el = someNode.nextSibling;
fixUp(el); // Adds missing methods to the element and fixes broken ones
var matchingEls = el.getElementsByClassName("someclass");

あなたが望んでいることが不可能である理由についての、実に優れた詳細な説明については、これを読むことをお勧めします。 http://perfectionkills.com/whats-wrong-with-extending-the-dom/

私は信じていない単純なそこに「メイク・ブラウザが正しく動作」だフレームワーク - 。彼らはこのすべてを超えて非常に重要度を行く

JavaScriptを使用してユーザーのための賢明なフォールバックがあることを保証しながら、などのjQuery(おそらくカスタム最小限のビルドを使用して)、のようなものに時間を投資するのが賢明かもしれませんので、何の価値が再発明するホイールでありません、と述べました無効になっています。

「標準」JavaScriptを記述する場合は、

は、私が一般的に使用される機能のクロスブラウザの実装を提供し、私自身の関数を定義する傾向があります。 addEventremoveEventは、(いくつかの実装が存在する)、この技術の一般的な例です。私はいくつかの特定の問題の1つの関数を呼び出すために私を可能にする機能ではなく、機能-検出し、毎ターンで正しいコードを実行を研究し、書いてます。

高さ、幅、および要素のオフセットを取得してのようなものが別のブラウザのために異なる実装を必要とするが、簡単に機能の中に書かれており、あなたがそれらを必要な場所に再利用することができます。

だから、私の「溶液」は、主にDIYソリューションです。 「utilities.js」というファイルを作成し、あなたがそれらを必要とするような機能の追加を開始。 addEventremoveEvent、およびクロスブラウザXMLHttpRequestは、開始するには良い場所です。ここでは、私はあなたをオフに始めましょう。

function createXHR()
{
    var xhr;
    if (window.ActiveXObject)
    {
        try
        {
            xhr = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch(e)
        {
            alert(e.message);
            xhr = null;
        }
    }
    else
    {
        xhr = new XMLHttpRequest();
    }

    return xhr;
}
あなたが合うようにその関数が使用するためのXMLHttpRequestオブジェクトを返します。お楽しみください。

編集のこのアプローチは、理論的にはあなたの名前空間かなりの群衆可能性があることを行うノート。あなたはutilitiesオブジェクトを作成し、utilities.createXHRを呼び出すオフ最善かもしれません。

私が正しくあなたを理解している場合、

は、 http://flowjs.com/ には非常に近いあなたものにする必要があります探している。それが主な目的だ:「FlowJSが実装すべてのモダンブラウザでDOMレベル3 API」

あなたはjQueryを使ってそれを持っています。 jQueryのを使用すると、あなたに別のブラウザ専用の実装で不足している一貫してDOMを照会することができます。私は、人々はJavaScriptでこれらの日に対処することを課題の最大のセットでのAJAX呼び出しのお得な情報を言うと思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top