На основании URL, как установить глобальные узлы навигационного узла (CSOM) как Active - JavaScript
-
29-09-2020 - |
Вопрос
Я хочу использовать одну и ту же навигацию повсюду (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);
}
.