0

一部の HTML5 要素を古いブラウザーで動作させ、ユーザーが独自の要素を作成できるようにするための JavaScript フレームワークがあります。ユーザーが独自の要素を作成するための関数は、別の Javascript ファイルで使用されます。たとえば、次のようになります。

element('myElement').appendStyleColor('red').type('text');

ユーザーがフレームワークで要素を作成していることを確認するために、ユーザーがファイルの最後に定義する変数を作成しました。例えば:

using = "myFramework";

変数「using」に値「myFramework」がない場合にアラートを表示するテストを作成する必要がありましたが、テストが成功した場合、myFramework.js のみを検索するため、テストを実行できませんでした。 script.js ファイルや application.js ファイルのようなユーザーの JavaScript ファイルではありません。

私のコードは次のとおりです。

if (using !== "myFramework") {
     alert("The value 'myFramework' is not defined in the 'using' variable.")   
}

PS : 私のフレームワークは、フレームワークの本名ではありません。

** jQuery は使いたくない **

4

2 に答える 2

2

ユーザーがフレームワークで要素を作成していることを確認するために、ユーザーがファイルの最後に定義する変数を作成しました。

グローバル変数を持つことusingは、要素がフレームワークで作成されたかどうかを監視する方法としては不十分です。これは非常に信頼性が低く、クライアント コードが複雑になります。その変数が定義されていたとしても、実際に関数を使用して要素を操作しusingたことを示すものは何もありません。elementまた、追加のグローバルでグローバル名前空間を汚染することは非常に悪い習慣です。

とにかく、なぜその知識が必要なのかはわかりませんが、element関数によって渡されたり作成されたりした要素自体に属性を設定するだけで済みます。

簡単にするために、引数として を受け取り、要素のラップされたバージョンを返すelement関数があるとします。tagName

例えば

var element = (function () {
    var elCount = 0;

    function element(tagName) {
        return new ElementWrapper(document.createElement(tagName));
    }

    function ElementWrapper(el) {
        this.el = el;
        this.el.setAttribute('data-my-framework', ++elCount);
    }

    return element;

})();

つまりsomeDOMEl.hasAttribute('data-my-framework')、要素がelement関数で作成されたかどうかを知るために使用できます。明らかに、クライアント コードはいつでも属性を削除できますが、その場合は何もできません。

console.log(element('div').el.getAttribute('data-my-framework')); //1
于 2013-09-23T19:15:21.057 に答える
0

onloadイベントを使用してこのチェックを行うことをお勧めします。これにより、すべてのコンテンツが読み込まれ、変数が設定されます。

 window.onload = function() {
    if (using !== "myFramework") {
       alert("The value 'myFramework' is not defined in the 'using' variable.");
    }
 }
于 2013-09-23T19:07:10.390 に答える