2016-04-09 6 views
0

このコードの内容を理解するのが難しいです。誰でもこのコードを理解するのを助けてくれますか?JavaScriptコードの理解が難しい

var PnPResponsiveApp = PnPResponsiveApp || {}; 

PnPResponsiveApp.responsivizeSettings = function() { 
    // return if no longer on Settings page 
    if (window.location.href.indexOf('/settings.aspx') < 0) return; 

    // find the Settings root element, or wait if not available yet 
    var settingsRoot = $(".ms-siteSettings-root"); 
    if (!settingsRoot.length) { 
     setTimeout(PnPResponsiveApp.responsivizeSettings, 100); 
     return; 
    } 
} 
+0

以前に定義されていない場合に作成される 'PnPResponsiveApp'に' responsivizeSettings'関数を追加するように見えます。特にどの部分に質問がありますか? – lxe

+0

@lxeこの行は特にPnPResponsiveApp.responsivizeSettings – suman

+0

@sumanこれは、 'responsivizeSettings'という名前の' PnPResponsiveApp'メソッドを定義しています。 '= 'の後の' function(){...} 'は、呼び出されたときに実行するパラメータと文を指定します。 –

答えて

1
var PnPResponsiveApp = PnPResponsiveApp || {}; 

上記の行は、それがすでに存在する場合PnPResponsiveApp変数は、それ以外の場合は、新しいオブジェクトに設定されています、その古い値を取得することを保証します。

PnPResponsiveApp.responsivizeSettings = function() { 

ここで新しい機能が作成されます。

// return if no longer on Settings page 
    if (window.location.href.indexOf('/settings.aspx') < 0) return; 

現在のページのURLが設定ページでない場合、関数はすぐに終了します。

// find the Settings root element, or wait if not available yet 
    var settingsRoot = $(".ms-siteSettings-root"); 

これは、クラスが.ms-siteSettings-rootのすべての要素を取得します。 (ノードリストの長さがゼロでない場合)は、任意の要素が見つかった場合

if (!settingsRoot.length) { 
     setTimeout(PnPResponsiveApp.responsivizeSettings, 100); 
     return; 
    } 

、その後100ミリ秒PnPResponsiveApp.responsivizeSettings関数を呼び出します。

+0

ありがとう。とった。 – suman

1

非常に簡単にコード基本的に、私は何が起こっているか説明します:

var PnPResponsiveApp = PnPResponsiveApp || {}; 

これは、変数がすでに定義されているかどうかを確認していない場合は、エラーがスローされないよう、空にそれを等しくすることは非常に一般的な方法ですオブジェクト、より多くの情報のためにここを見て... varがすでに存在しているかどうかを確認するために、多くのフレームワークやライブラリに非常に安全な方法を使用しています:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators

PnPResponsiveApp.responsivizeSettings = function() {}; 

これは基本的にシンプルな機能ですが、オブジェクトに添付しますPnPResponsiveApp - 単にresponsivizeSettの場合ings = function(){};それは文字列が含まれていない場合は-1 indexOfをリターンするので、それはsettings.aspxていない場合は-1を返します - LinkBar内にあるリンクはsettings.aspxを持っている場合、これがチェックされ

if (window.location.href.indexOf('/settings.aspx') < 0) return; 

ウィンドウオブジェクトに添付ますそれは可能性が0よりも小さくして、全体の関数の戻り値の...第2の戻りは、基本的にこれは、基本的には、MS-siteSettingsルートのクラスにすべての要素を検索し、変数settingsRootにそれらを等しい

var settingsRoot = $(".ms-siteSettings-root"); 

undefinedを返す、それ単一のDOMまたは複数のものにする...

if (!settingsRoot.length) { 

これは基本的に、DOM要素にms-siteSettings-rootクラスがあるかどうかを確認します。lengthはNumberを返します。返されない場合は、1,2,3などの戻り値がある場合は0を返します。 ... Trueに等しいので、それがあります場合は、この方法では、我々がチェックすることができますJavaScriptで偽と0よりも大きいと等しい

setTimeout(PnPResponsiveApp.responsivizeSettings, 100); 

のでsettingsRootがある場合、我々は、この機能ブロックを実行したsetTimeoutの私たちと100ms待つ... setTimeoutは常にこのように動作します。setTimeout(function()、time);最後に同じリターンが発生します...

希望の情報です...

+0

あなたの明確な説明に感謝します。とった。 – suman

関連する問題