На основании URL, как установить глобальные узлы навигационного узла (CSOM) как Active - JavaScript

sharepoint.stackexchange https://sharepoint.stackexchange.com/questions/111857

Вопрос

Я хочу использовать одну и ту же навигацию повсюду (Mysite, Teamsites ..), поэтому я выбираю (управляемую навигацию) глобальную навигацию CSOM в MeedPage.Глобальная навигация собирается показать один уровень.

Проблема в том, что когда я нахожусь на навигации, навигация не устанавливает ни одно из раковины в качестве активного.Поэтому я не могу использовать CSS для стиля элемента.Мне нужно установить правильный «узел» в качестве активного программного обеспечения, где когда-либо вы наращиваете структуру

-root
  -sitecoll (internalinfo)
  -subsite (organisation)
  -sitecoll (social)
.

Введите описание изображения здесь

Что я хочу, это установить активный узел, ниже вы можете увидеть пример некоторых URL.

http://dev.site.com/InternalInfo/.../../../SitePages/home.aspx (set InternalInfo as active)
http://dev.site.com/InternalInfo/Organization/SitePages/home.aspx (set organization as active)
http://dev.site.com/Social/../../../../SitePages/home.aspx (set social as active)
.

Как вы можете видеть

Какой лучший способ сделать это, JavaScript?Какой лучший способ проверить «Sub Pathname»?ex: http: /site.com/sub1/sub2/ ..

Могу ли я сделать что-то вроде этого?

var currentLocation = window.location;
var pathArray = window.location.pathname.split( '/' );

if(pathArray[2] == "Organisazion")
  setAsActive("Orgainzation");

if(pathArray[1] == "InternalInfo")
  setAsActive("InternalInfo");
.

Если вы получили лучший способ, пожалуйста, приведите пример.

Это было полезно?

Решение

Я строю что-то подобное.

Я только что проверил, содержит ли текущий URL-адрес пути моего навигационного элемента.В вашем случае URL-адреса приведет к тому, что множественные ссылки помечены как активные.Но с упорядоченным набором URL-адресов вы можете избежать этого.

// URLs ordered by length to ensure correct results
var orderesNodes = [];
orderesNodes[0] = "http://dev.site.com/InternalInfo/Organization/";
orderesNodes[1] = "http://dev.site.com/InternalInfo/";
orderesNodes[2] = "http://dev.site.com/Social/";

$.each(orderesNodes, function(index, current){
     if(CheckIfContains(current)){
        //mark as active
        return false; //dont process the rest
     }
});

function CheckIfContains(href) {
    if (window.location.href.indexOf(href) > -1) {
        return true;
    }
    return false;
}
.

ДОСТАВКА БАРИЗЕРА доступа

    SetValue: function (key, value) {
        /// <summary>
        /// Saves data in the browsers localstorage
        /// </summary>
        /// <param name="key">Key paired with the value. Previous value under that key will be overwritten.</param>
        /// <param name="value">Value paired with the key.</param>
        //JSON is used to save container in the storage, which is by default string only
        localStorage.setItem(key, JSON.stringify(value));
    },
    GetValue: function (key) {
        /// <summary>
        /// Gets data from the browsers localstorage
        /// </summary>
        /// <param name="key">Key paired with the value.</param>
        /// <returns>Value or null if there is no value at the key</returns>
        //JSON is used to save container in the storage, which is by default string only
        return JSON.parse(localStorage.getItem(key));
    },
    DeleteValue: function (key) {
        /// <summary>
        /// Deletes data from the browsers localstorage
        /// </summary>
        /// <param name="key">Key paired with the value.</param>
        localStorage.removeItem(key);
    }
.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top