Shoora
5/5/2019 - 5:06 PM

Add "id" to headings and scroll to heading based on URL

Add "id" to headings and scroll to heading based on URL

function headingAnchors(self_link_text) {
	self_link_text = self_link_text || '#';
	var headings = document.querySelectorAll('h1, h2, h3, h4, h5');

	for (var i = 0; i < headings.length; i++) {
		var e = headings[i];
		if (!e.id) {
			var tc = e.textContent;
			tc = tc.replace(/[^a-z0-9-]/gi, '-')
					.replace(/-{2,}/gi, '-')
					.replace(/-+$/gi, '')
					.toLowerCase();

			e.id = tc;

			var a = document.createElement('a');
			a.href = '#' + tc;
			a.target = "_self";
			a.textContent = self_link_text;

			e.appendChild(a);
		}
	}

	// Scroll to the given hash
	var h = location.hash;
	location.hash = '';
	location.hash = h;
}