SharePoint Online için Gezinti Seçenekleri

Önemli : Bu makale makine çevisidir. Bkz. yasal uyarı. Bu makalenin İngilizce sürümüne buradan ulaşabilirsiniz.

Bu makalede, yapısal gezintiyi ve arama odaklı Gezinti kullanarak sayfa yükleme süreleri için SharePoint Online iyileştirmek açıklanır.

Genel gezinti ve yapısal gezintiyi yapılandırmak için gerekli sorguları sayfalarınızın daha yavaş da SharePoint Online Yükleme yapabilirsiniz. SQL server için her biri bu sorguları başka bir istek gönderir olmasıdır. Her site ve sahip olduğunuz alt site için daha fazla istekleri için SQL server üretilmiştir. Bu sorun, ana sayfalar da etkiler. Bu genel gezinti de etkilenen anlamına gelir.

Bazı SharePoint sitelerinde büyük ve karmaşık yapıları gerektirir. İçerik sorgulamadan kullanır, kullanıma hazır yapısal gezintiyi kullanarak birden çok site katmanları nedeniyle yavaş sayfa yükleme süreleri neden olabilir. Her katmanların alt sitelerin de başka bir sorgu oluşturur.

İki ana kullanıma hazır Gezinti Seçenekleri SharePoint hem de üçüncü, özel, arama odaklı yaklaşım vardır. Her seçenek Artıları ve eksileri aşağıdaki tabloda özetlendiği gibi bulunur.

Yapısal gezintiyi

Yönetilen Gezinti

Arama tabanlı gezinti

Uzmanları için:

  • Kolay yapılandırmak

  • Güvenlik kırpılır

  • Siteler eklenmiş olarak otomatik olarak güncelleştirir

Uzmanları için:

  • Kolay korumak

Uzmanları için:

  • Güvenlik kırpılır

  • Siteler eklenmiş olarak otomatik olarak güncelleştirir

  • Fast zaman ve yerel olarak önbelleğe alınmış gezinti yapısını yükleme

Eksileri:

  • Karmaşık site yapısıyla kötü gerçekleştirebilir

Eksileri:

  • Site yapısını yansıtacak şekilde otomatik olarak güncelleştirme

Eksileri:

  • Kolayca sipariş sitelerine hiçbir özelliği

  • Ana sayfayı (gerekli teknik becerilere) özelleştirmesini gerektirir

Çok sayıda alt sitelerin bir siteniz varsa ve yapısal gezintiyi kullanıyorsanız, yavaşlatıyor sayfanıza önemli ölçüde yükler. Siteniz için en uygun seçeneği teknik yapabileceklerinizden ve site gereksinimlerinize üzerinde bağlıdır. Özel ana sayfa kullanma rahat ve varsayılan ana sayfayı SharePoint Online için ortaya çıkabilecek değişiklikleri korumak için kuruluşunuzdaki bazı özelliği varsa, arama odaklı seçeneği en iyi kullanıcı deneyimi üretir. Ardından yönetilen gezintiyi kullanıma hazır yapısal gezintiyi ve arama arasında basit bir orta Karayolu isterseniz, çok iyi bir seçenektir. Yönetilen Gezinti seçeneği yoluyla tutulabilir yapılandırma kodu özelleştirme dosyaları kapsayan değil ve kullanıma hazır yapısal gezintiyi önemli ölçüde hızlıdır.

Var olan sitede çözümlemek ve gezinti öğeleri ve alt siteleri gerekli sayısını azaltmak için başka bir yaklaşım olur. İyi site yapısını ve gezinti değil sürece çok karmaşık yapısal gezintiyi gerçekleştirir olmasıdır.

Bu makalede, bir örnek site koleksiyonundaki çeşitli yaklaşımlar karşılaştırır. Örnek site koleksiyonu 11 alt sitelerin ve her alt sitenin en az dört ek alt sitelerin sahiptir.

PowerPoint Giriş sekmesi, Biçim grubu

SharePoint Online'da yapısal gezintiyi kullanma

Bu varsayılan olarak kullanılan kullanıma hazır gezinti ve en basit ve uygun çözüm çoğu durumda olur. Karmaşık bir yapı birden fazla alt veya alt sitelerin birçok düzeyi sürece, yapısal gezintiyi de gerçekleştirir. Bu güvenlik kırpılmış yeni siteler eklendiğinde, otomatik olarak güncelleştirir ve ana sayfanın herhangi bir özelleştirmeye gerektirmez olduğunu Bu yaklaşımın ana yapabilmenizi sağlar. Ayrıca kolayca teknik olmayan bir kullanıcı öğe ekleme, öğeleri gizlemek ve Gezinti Ayarları sayfasından yönetme.

SharePoint Online'da yapısal gezintiyi açma

Performans yapısal gezintiyi ve Göster ile standart bir SharePoint Online çözümde seçeneği nasıl alt sitesi göstermek için açıktır. Bir ekran Site Ayarları sayfasında bulunan ayarlar aşağıda görüntüsü olduğu > Gezinti.

Posta Ara sekmesi, grup 2

SharePoint Online'da yapısal gezintiyi performansını çözümleme

Bir SharePoint sayfası performansını çözümlemek için Internet Explorer'da F12 Geliştirici Araçları'nın sekmesini kullanın.

Gösteren ekran görüntüsü F12 geliştirme araçları Ağ sekmesi

sekmesinde, yüklenmekte .aspx sayfası'nı tıklatın ve sonra Ayrıntılar sekmesinde tıklatın.

Web tarayıcısı formlarında kullanılamayan InfoPath 2010 özellikleri

Yanıt üst bilgileri’ne tıklayın.

Ekran Ayrıntılar sekmesi

SharePoint kendi yanıt üstbilgilerinde bazı yararlı tanılama bilgileri verir. En kullanışlı sunucudaki işlemi için ne kadar süreyle bir istek geçen milisaniye cinsinden, değer, vurgulayan mavi Kutucu    biridir.

Alt siteleri göster görüntüsü aşağıdaki ekranda yapısal gezintiyi seçili değildir. Genel gezinti bölmesinde yalnızca site koleksiyonu bağlantısı olduğu anlamına gelir:

Yükleme süreleri isteği süre olarak gösteren ekran görüntüsü

Vurgulayan mavi Kutucu    anahtar 245 milisaniyelik bir değere sahip. Bu isteği dönmek için geçen süre temsil eder. Sitede yalnızca bir gezinti öğesi olduğundan, yoğun Gezinti SharePoint Online'nasıl gerçekleştirir için iyi bir Kıyaslama budur. Sonraki ekran görüntüsünde, bu anahtar alt sitelerde ekleme nasıl etkilediğini gösterilir.

2502 ms isteği süresini gösteren ekran görüntüsü

Alt siteler ekleme, sayfa isteği dönmek için gereken süre önemli ölçüde artırdı.

Normal yapılandırılmış Gezinti kullanmanın yararları, kolayca sırasını düzenleme, siteler gizlemek, sayfalar ekleyin, sonuçları güvenlik kırpılır ve, SharePoint Online'da kullanılan desteklenen ana sayfadan deviating değil olmadığını olur. Sitenizi dikkatle yapılandırmak ve alt siteler site koleksiyonunuzda en aza indirmek istiyorsanız yapısal gezintiyi de gerçekleştirir.

Yönetilen gezinti ve yönetilen meta verileri SharePoint Online'da kullanma

Yönetilen Gezinti yapısal gezintiyi olarak işlevselliği ile aynı tür yeniden oluşturmak için kullanabileceğiniz başka bir kullanıma hazır seçenektir.

Yönetilen Meta veri kullanmanın avantajı, site gezintisi oluşturmak için sorgu tarafından içeriği tablolarından veri almak için daha hızlı olmasıdır. Çok hızlı bir yolu yoktur Kırp güvenliğine sonuçları olsa nedenle belirli bir siteye erişim bir kullanıcı yoksa bağlantıyı yine gösterilir ancak hata iletisine yol gösterecektir.

Yönetilen gezinti ve sonuçları gerçekleştirme   

Birkaç makale TechNet'teki yönetilen Gezinti ayrıntılarını Örneğin, SharePoint Server 2013'te yönetilen Gezinti genel bakışkonusuna bakın.

Yönetilen Gezinti uygulamak için yönetici izinleri depolamak terim olması gerekir. Site koleksiyonu yapısı URL'leri terimlerle ayarlayarak, yönetilen Gezinti yapısal gezintiyi değiştirmek için kullanılabilir. Örneğin:

Ekran görüntüsü Subsite1 örneği

Aşağıdaki örnek yönetilen Gezinti kullanarak karmaşık Gezinti performansını gösterir.

Ekran görüntüsü vurgulayan mavi Kutucu örneği

Yönetilen Gezinti tutarlı bir şekilde kullanarak içeriğe göre sorgu yapısal gezintiyi yaklaşım karşılaştırıldığında performansı artırır.

Arama temelli istemci tarafı komut dosyası kullanma

Aramayı kullanarak sürekli gezinme kullanarak arka planda yerleşik dizinler yararlanabileceğiniz. Bu yoğun içerik sorgu yok anlamına gelir. Arama sonuçlarında arama dizinden alınır ve güvenlik kırpılmış sonuçlardır. Normal içerik sorguları göre daha hızlı budur. Yapısal gezintiyi arama kullanarak, özellikle de karmaşık site yapısı, varsa yüklenme zamanı önemli ölçüde sayfa yukarı hızlandırır. Yönetilen Gezinti üzerinden ana avantajı, bu güvenlik kırpması'ndan yararlı olur.

Bu yaklaşımın bir özel ana sayfa oluşturma ve özel HTML ile kullanıma hazır gezinti kodu değiştirme kapsar. Dosya seattle.html Gezinti kodunda değiştirmek için bu yordamı izleyin.

Bu örnekte, seattle.html dosyayı açın ve tüm öğe Değiştir Kimliği "DeltaTopNavigation" = özel HTML kodu ile.

Örnek: bir ana sayfa kullanıma hazır Gezinti kodunda değiştirmek için

  1. Site Ayarları sayfasına gidin.

  2. Ana Sayfa Galerisi, Ana sayfalar' ı tıklatarak açın.

  3. Buradan kitaplığı gidin ve seattle.masterdosyasını indirin.

  4. Bir metin düzenleyicisi kullanılarak kodunu düzenleme ve aşağıdaki ekran kod bloğunda silin.

    Dosyalarınızı buluta kaydetme
  5. Arasında yer alan kodunu kaldırma < SharePoint:AjaxDelta kimliği "DeltaTopNavigation" = > ve < \SharePoint:AjaxDelta > etiketler ve aşağıdaki parçacığı ile değiştirin:

    <div id="loading">
      <!--Replace with path to loading image.-->
      <div style="background-image: url(''); height: 22px; width: 22px; ">
      </div>
    </div>
    <!-- Main Content-->
    <div id="navContainer" style="display:none">
        <div data-bind="foreach: hierarchy" class="noindex ms-core-listMenu-horizontalBox">
            <a class="dynamic menu-item ms-core-listMenu-item ms-displayInline ms-navedit-linkNode" data-bind="attr: { href: item.Url, title: item.Title }">
                <span class="menu-item-text" data-bind="text: item.Title">
                </span>
            </a>
            <ul id="menu" data-bind="foreach: $data.children" style="padding-left:20px">
                <li class="static dynamic-children">
                    <a class="static dynamic-children menu-item ms-core-listMenu-item ms-displayInline ms-navedit-linkNode" data-bind="attr: { href: item.Url, title: item.Title }">
                        <span aria-haspopup="true" class="additional-background ms-navedit-flyoutArrow dynamic-children">
                            <span class="menu-item-text" data-bind="text: item.Title">
                            </span>
                        </span>
                    </a>
                    <ul id="menu" data-bind="foreach: children; visible: children.length>0" class="dynamic" >
                        <li class="dynamic">
                            <a class="dynamic menu-item ms-core-listMenu-item ms-displayInline ms-navedit-linkNode" data-bind="attr: { href: item.Url, title: item.Title }">
                                <span class="menu-item-text" data-bind="text: item.Title">
                                </span>
                            </a>
                        </li>
                    </ul>
                </li>
            </ul>
        </div>
    </div>
  6. Yükleme URL'de Değiştir bağlama etiketi başında bir yükleme görüntüsü site koleksiyonunuzda bağlantısı olan görüntü. Değişikliklerinizi yaptıktan sonra dosyayı yeniden adlandırın ve sonra ana sayfa Galerisi'ne karşıya yükleyin. Bu yeni .master dosyası oluşturur.

  7. Bu HTML, JavaScript kodundan arama sonuçları tarafından doldurulan temel bir Satış marjı eşittir. Aşağıdaki kod parçası gösterildiği şekilde var root = “site collection URL değerini değiştirmek için aşağıdaki kodu düzenlemeniz gerekir:

    var root = “https://spperformance.sharepoint.com/sites/NavigationBySearch”;

    Dosyanın tamamını JavaScript aşağıdaki gibidir:

    //Models and Namespaces
    var SPOCustom = SPOCustom || {};
    SPOCustom.Models = SPOCustom.Models || {}
    SPOCustom.Models.NavigationNode = function () {
    
        this.Url = ko.observable("");
        this.Title = ko.observable("");
        this.Parent = ko.observable("");
    
    };
    
    var root = "https://spperformance.sharepoint.com/sites/NavigationBySearch";
    var baseUrl = root + "/_api/search/query?querytext=";
    var query = baseUrl + "'contentClass=\"STS_Web\"+path:" + root + "'&trimduplicates=false&rowlimit=300";
    
    var baseRequest = {
        url: "",
        type: ""
    };
    
    
    //Parses a local object from JSON search result.
    function getNavigationFromDto(dto) {
        var item = new SPOCustom.Models.NavigationNode();
        if (dto != undefined) {
    
            var webTemplate = getSearchResultsValue(dto.Cells.results, 'WebTemplate');
    
            if (webTemplate != "APP") {
                item.Title(getSearchResultsValue(dto.Cells.results, 'Title')); //Key = Title
                item.Url(getSearchResultsValue(dto.Cells.results, 'Path')); //Key = Path
                item.Parent(getSearchResultsValue(dto.Cells.results, 'ParentLink')); //Key = ParentLink
            }
    
        }
        return item;
    }
    
    function getSearchResultsValue(results, key) {
    
        for (i = 0; i < results.length; i++) {
            if (results[i].Key == key) {
                return results[i].Value;
            }
        }
        return null;
    }
    
    //Parse a local object from the serialized cache.
    function getNavigationFromCache(dto) {
        var item = new SPOCustom.Models.NavigationNode();
    
        if (dto != undefined) {
    
            item.Title(dto.Title);
            item.Url(dto.Url);
            item.Parent(dto.Parent);
        }
    
        return item;
    }
    
    /* create a new OData request for JSON response */
    function getRequest(endpoint) {
        var request = baseRequest;
        request.type = "GET";
        request.url = endpoint;
        request.headers = { ACCEPT: "application/json;odata=verbose" };
        return request;
    };
    
    /* Navigation Module*/
    function NavigationViewModel() {
        "use strict";
        var self = this;
        self.nodes = ko.observableArray([]);
        self.hierarchy = ko.observableArray([]);;
        self.loadNavigatioNodes = function () {
            //Check local storage for cached navigation datasource.
            var fromStorage = localStorage["nodesCache"];
            if (false) {
                var cachedNodes = JSON.parse(localStorage["nodesCache"]);
    
                if (cachedNodes && timeStamp) {
                    //Check for cache expiration. Currently set to 3 hrs.
                    var now = new Date();
                    var diff = now.getTime() - timeStamp;
                    if (Math.round(diff / (1000 * 60 * 60)) < 3) {
    
                        //return from cache.
                        var cacheResults = [];
                        $.each(cachedNodes, function (i, item) {
                            var nodeitem = getNavigationFromCache(item, true);
                            cacheResults.push(nodeitem);
                        });
    
                        self.buildHierarchy(cacheResults);
                        self.toggleView();
                        addEventsToElements();
                        return;
                    }
                }
            }
            //No cache hit, REST call required.
            self.queryRemoteInterface();
        };
    
        //Executes a REST call and builds the navigation hierarchy.
        self.queryRemoteInterface = function () {
            var oDataRequest = getRequest(query);
            $.ajax(oDataRequest).done(function (data) {
                var results = [];
                $.each(data.d.query.PrimaryQueryResult.RelevantResults.Table.Rows.results, function (i, item) {
    
                    if (i == 0) {
                        //Add root element.
                        var rootItem = new SPOCustom.Models.NavigationNode();
                        rootItem.Title("HSHSL");
                        rootItem.Url(root);
                        rootItem.Parent(null);
                        results.push(rootItem);
                    }
                    var navItem = getNavigationFromDto(item);
                    results.push(navItem);
                });
                //Add to local cache
                localStorage["nodesCache"] = ko.toJSON(results);
    
                localStorage["nodesCachedAt"] = new Date().getTime();
                self.nodes(results);
                if (self.nodes().length > 0) {
                    var unsortedArray = self.nodes();
                    var sortedArray = unsortedArray.sort(self.sortObjectsInArray);
    
                    var newItem = new SPOCustom.Models.NavigationNode();
                    newItem.Title("StaffHelp");
                    newItem.Url("https://staff.hshsl.umaryland.edu/staffhelp");
                    newItem.Parent(null);
                    sortedArray.push(newItem);
    
    
    
                    self.buildHierarchy(sortedArray);
                    self.toggleView();
                    addEventsToElements();
                }
            }).fail(function () {
                //Handle error here!!
                $("#loading").hide();
                $("#error").show();
            });
        };
        self.toggleView = function () {
            var navContainer = document.getElementById("navContainer");
            ko.applyBindings(self, navContainer);
            $("#loading").hide();
            $("#navContainer").show();
    
        };
        //Uses linq.js to build the navigation tree.
        self.buildHierarchy = function (enumerable) {
            self.hierarchy(Enumerable.From(enumerable).ByHierarchy(function (d) {
                return d.Parent() == null;
            }, function (parent, child) {
                if (parent.Url() == null || child.Parent() == null)
                    return false;
                return parent.Url().toUpperCase() == child.Parent().toUpperCase();
            }).ToArray());
    
            self.sortChildren(self.hierarchy()[0]);
        };
    
    
        self.sortChildren = function (parent) {
    
            // sjip processing if no children
            if (!parent || !parent.children || parent.children.length === 0) {
                return;
            }
    
            parent.children = parent.children.sort(self.sortObjectsInArray2);
    
            for (var i = 0; i < parent.children.length; i++) {
                var elem = parent.children[i];
    
                if (elem.children && elem.children.length > 0) {
                    self.sortChildren(elem);
                }
            }
        };
    
        // ByHierarchy method breaks the sorting in chrome and firefix 
        // we need to resort  as ascending
        self.sortObjectsInArray2 = function (a, b) {
            if (a.item.Title() > b.item.Title())
                return 1;
            if (a.item.Title() < b.item.Title())
                return -1;
            return 0;
        };
    
    
        self.sortObjectsInArray = function (a, b) {
            if (a.Title() > b.Title())
                return -1;
            if (a.Title() < b.Title())
                return 1;
            return 0;
        }
    }
    
    //Loads the navigation on load and binds the event handlers for mouse interaction.
    function InitCustomNav() {
        var viewModel = new NavigationViewModel();
        viewModel.loadNavigatioNodes();
    }
    
    function addEventsToElements() {
        //events.
        $("li.dynamic-children").mouseover(function () {
            var position = $(this).position();
            $(this).find("ul").css({ width: 125, left: position.left + 10, top: 50 });
    
        })
            .mouseout(function () {
                $(this).find("ul").css({ width: 0, left: -99999, top: 0 });
            });
    }
    
    _spBodyOnLoadFunctionNames.push("InitCustomNav");
    

    Yukarıda jQuery $(document).ready işlevinde oluşturulan bir viewModel nesnesi ve sonra loadNavigationNodes() işlevi, nesne üzerinde gösterilen kodu Özet olarak adlandırılır. Bu işlev ya da istemci tarayıcının HTML5 yerel depolaması'nda depolanan önceden oluşturulmuş Gezinti hiyerarşisinde yükler veya işlevi queryRemoteInterface()arar.

    QueryRemoteInterface() komut dosyasında tanımlanmış sorgu parametresi getRequest() işlevini kullanarak bir isteği oluşturur ve sonra veri sunucudan getirir. Bu veri temelde veri aktarma nesneleri çeşitli özelliklere sahip olarak gösterilen site koleksiyonundaki tüm sitelerde dizisidir. Bu veri sonra Knockout.js observable özelliklerini kullanmak için oluşturmak için kullanabileceğiniz önceden tanımlı SPO.Models.NavigationNode nesnelerin içine veri değerleri, önceden tanımlanmış HTML'e bağlama göre ayrıştırılmış. Nesneleri sonra sonuçları dizisine yerleştirilir. Bu dizi Boşalt'ı kullanarak JSON ayrıştırılmış ve gelecekteki sayfa yüklerinin üzerinde iyileştirilmiş performans için yerel tarayıcıya depolama saklanır.

  8. Daha sonra sonuçları self.nodes dizi atanır ve hiyerarşi çıktı için bir dizi self.heirarchyatama linq.js kullanarak nesneleri oturumunu üretilmiştir. Bu dizi HTML'ye bağlı nesnesidir. Bu toggleView() işlevinde ko.applyBinding() işlevinin self nesneyi aktararak yapılır. Bunun için aşağıdaki HTML bağlanacak hiyerarşi dizi sonra neden olur:

    <div data-bind=”foreach: hierarchy” class=”noindex ms-core-listMenu-horizontalBox”>

    Son olarak, mouseenter ve mouseexit için olay işleyicisi hangi addEventsToElements() işlevinde yapılır alt site açılan menüler işlemek için en üst düzey Gezinti eklenir.

    Gezinti sonuçlarını altındaki ekran görülebilir:

    Gezinti sonuçlarının ekran görüntüsü

    Karmaşık Gezinti örneğimizde yeni bir sayfa sunucuda harcanan zamanı yerel önbelleğe alma gösterir olmadan yük yönetilen Gezinti yaklaşım olarak benzer bir sonucu elde etmek için Kıyaslama yapısal gezintiyi gelen kesildiği.

    SharePoint 2013’ün Paylaş, Düzenle, Bul, Oluştur ve Yönet özelliklerinin bloklarını vurgulayan mavi kutucu serisi.

    Bir ana Bu yaklaşımın avantajı HTML5 yerel depolama kullanarak gezinti yerel olarak kullanıcı için bunlar sayfa yükleme gelecek sefer depolandığını olur.

Biz önemli performans geliştirmeleri API arama için yapısal gezintiyi kullanmalarını alın; Bununla birlikte, çalıştırıp bu işlevsellik özelleştirmek için bazı teknik yeteneği götürür. Örnek uygulamasında siteleri ile kullanıma hazır yapısal gezintiyi aynı şekilde sıralanır; alfabetik sırayla. Bu sırasından sapma isteseydiniz, geliştirmek ve korumak daha karmaşık olacaktır. Ayrıca, bu yaklaşım desteklenen ana sayfalardan sapma gerektirir. Özel ana sayfa değil korunuyorsa, sitenizi yanıtsız out güncelleştirmeleri ve Microsoft ana sayfalarına yaptığı geliştirmeleri açmak.

Yukarıdaki kod aşağıdaki bağımlılıklar vardır:

Geçerli sürümünü LinqJS kullanılan yukarıdaki kodunda ByHierarchy yöntemi içermiyor ve gezinti kodu koparır. Bu hatayı düzeltmek için aşağıdaki yöntemi Linq.js dosyasına önce satır eklemeyi "Flatten: işlevi ()".

ByHierarchy: function(firstLevel, connectBy, orderBy, ascending, parent) {
     ascending = ascending == undefined ? true : ascending;
     var orderMethod = ascending == true ? 'OrderBy' : 'OrderByDescending';
     var source = this;
     firstLevel = Utils.CreateLambda(firstLevel);
     connectBy = Utils.CreateLambda(connectBy);
     orderBy = Utils.CreateLambda(orderBy);
    
     //Initiate or increase level
     var level = parent === undefined ? 1 : parent.level + 1;

    return new Enumerable(function() {
         var enumerator;
         var index = 0;

        var createLevel = function() {
                 var obj = {
                     item: enumerator.Current(),
                     level : level
                 };
                 obj.children = Enumerable.From(source).ByHierarchy(firstLevel, connectBy, orderBy, ascending, obj);
                 if (orderBy !== undefined) {
                     obj.children = obj.children[orderMethod](function(d) {
                         return orderBy(d.item); //unwrap the actual item for sort to work
                     });
                 }
                 obj.children = obj.children.ToArray();
                 Enumerable.From(obj.children).ForEach(function(child) {
                     child.getParent = function() {
                         return obj;
                     };
                 });
                 return obj;
             };

        return new IEnumerator(

        function() {
             enumerator = source.GetEnumerator();
         }, function() {
             while (enumerator.MoveNext()) {
                 var returnArr;
                 if (!parent) {
                     if (firstLevel(enumerator.Current(), index++)) {
                         return this.Yield(createLevel());
                     }

                } else {
                     if (connectBy(parent.item, enumerator.Current(), index++)) {
                         return this.Yield(createLevel());
                     }
                 }
             }
             return false;
         }, function() {
             Utils.Dispose(enumerator);
         })
     });
 },

Not : Makine Çevirisi Yasal Uyarısı: Bu makale, insan müdahalesi olmadan bir bilgisayar sistemi tarafından çevrilmiştir. Microsoft bu makine çevirilerini İngilizce bilmeyen kullanıcıların Microsoft ürünleri, hizmetleri ve teknolojileriyle ilgili içeriklerden yararlanmasına yardımcı olmak için sunar. Bu makale makine çevirisi olduğundan sözcük, cümle dizilimi ve gramer hataları içerebilir.

Yeteneklerinizi geliştirin
Eğitimleri keşfedin
Yeni özellikleri ilk olarak siz edinin
Office Insider Programına Katılın

Bu bilgi yararlı oldu mu?

Görüşleriniz için teşekkür ederiz!

Geri bildiriminiz için teşekkürler! Office destek temsilcilerimizden biriyle görüşmeniz yararlı olabilir.

×