Till exempel elementet <ytd-browse page-subtype="trending"> skapas inte förens användaren navigerat dit genom att klicka på Populärt i YouTubes egna meny.
Menyn jag vill lägga till:
function oldAppbar() {
// All nav items
const navItems = [
{href: '/', text: chrome.i18n.getMessage('c_home')},
{href: '/feed/trending', text: chrome.i18n.getMessage('c_trending')},
];
let navElem = document.createElement("div"),
navList = document.createElement("ul"),
navItem, navLink;
// Cycle over each nav item
for (let i = 0; i < navItems.length; i++) {
// Create a fresh list item, and anchor
navItem = document.createElement("li");
navLink = document.createElement("a");
// Set properties on anchor
navLink.href = navItems[i].href;
navLink.innerHTML = navItems[i].text;
// add class to li
navItem.className = "ytcp-nav-item";
// Add anchor to list item, and list item to list
navItem.appendChild(navLink);
navList.appendChild(navItem);
}
// add elements
const grid = document.querySelector('ytd-browse');
grid.appendChild(navElem).appendChild(navList);
}
En meny måste alltid finnas inuti alla ytd-browse som finns och kommer att finnas i DOM, men jag vet inte hur. Nuvarande meny fungerar enbart på ett av elementen. Jag har provat med querySelectorAll('ytd-browse'), men jag antar att den behöver nån form av loop, och någon function som kan kolla om en ny ytd-browse lagts till?
Jag löste det lite halvt genom att observera role attributen i ytd-browse. När den är satt till main så sätts elementet in.
let element = document.querySelector('ytd-browse'), role = false;
const observer = new MutationObserver(function (mutations) {
const grid = document.querySelector('ytd-browse[role="main"]');
grid.appendChild(navElem).appendChild(navList);
});
observer.observe(element, { attributes: true, subtree: role });
Jag läste att man bör använda observer.disconnect(); men gör jag det så försvinner min meny när jag navigerar genom youtubes vänstra meny. Är det nåt man behöver tänka på?
observer.disconnect() använder man om man vill sluta lyssna på förändringar. I ditt fall låter det som att du vill fortsätta lyssna ”för evigt”. Det är inget fel med det.