Skip to content

Instantly share code, notes, and snippets.

@wragge
Created September 28, 2025 07:34
Show Gist options
  • Select an option

  • Save wragge/1fbbbecd515d9e165cb15b57e8462b61 to your computer and use it in GitHub Desktop.

Select an option

Save wragge/1fbbbecd515d9e165cb15b57e8462b61 to your computer and use it in GitHub Desktop.
Add a 'My favourites' menu to the SLV main navigation
// ==UserScript==
// @name SLV My Favs menu creator
// @namespace Violentmonkey Scripts
// @match *://www.slv.vic.gov.au/*
// @grant none
// @version 1.0
// @author -
// @description 28/09/2025, 11:19:01
// ==/UserScript==
// Edit this list to ad your own links
myLinks = [
{
"href": "https://find.slv.vic.gov.au/discovery/collectionDiscovery?vid=61SLV_INST:SLV&collectionId=81274079160007636",
"text": "Melbourne and Metropolitan Board of Works plans"
}
]
// Create a new top-level nav menu heading
let menuItem = document.createElement("li");
menuItem.className = "site-navigation__item site-navigation__item--get-involved";
let menuHead = document.createElement("a");
menuHead.className = "site-navigation__link js-site-navigation__link";
menuHead.href = "#";
menuHead.innerHTML = "My favourites"
// Display the megamenu when you hover over the heading
menuItem.addEventListener("mouseenter", (event) => {
event.target.className = "site-navigation__item site-navigation__item--get-involved site-navigation__item--dropdown";
});
// Hide the megamenu when you move the mouse away
menuItem.addEventListener("mouseleave", (event) => {
event.target.className = "site-navigation__item site-navigation__item--get-involved";
});
// Create the megamenu
// Lots of layers of divs in the MegaMenu!
let megaMenu = document.createElement("div");
megaMenu.className = "megamenu";
let megaMenuContainer = document.createElement("div");
megaMenuContainer.className = "megamenu__container";
let megaMenuNav = document.createElement("nav");
megaMenuNav.className ="megamenu-navigation";
let megaMenuSection = document.createElement("section");
megaMenuSection.className = "megamenu__section";
let megaMenuList = document.createElement("ul");
megaMenuList.className = "megamenu__list"
// Add links to the megamenu
for (link of myLinks) {
let megaMenuItem = document.createElement("li");
let megaMenuLink = document.createElement("a");
megaMenuLink.className = "megamenu__link";
megaMenuLink.href = link["href"];
megaMenuLink.innerHTML = link["text"];
megaMenuItem.appendChild(megaMenuLink);
megaMenuList.appendChild(megaMenuItem);
}
// Get the nav menu container
let menuBar = document.getElementsByClassName("nav navbar-nav site-navigation__list")[0];
// Add everything in the hierarchy
megaMenuSection.appendChild(megaMenuList);
megaMenuNav.appendChild(megaMenuSection);
megaMenuContainer.appendChild(megaMenuNav);
megaMenu.appendChild(megaMenuContainer);
menuItem.appendChild(menuHead);
menuItem.appendChild(megaMenu);
menuBar.appendChild(menuItem);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment