Commit 10e602e5 authored by Marcel Stör's avatar Marcel Stör
Browse files

Experiment with MutationObserver

parent 6a8fb8fe
......@@ -8,11 +8,6 @@ var nodemcu = nodemcu || {};
$(document).ready(function () {
hideNavigationForAllButSelectedLanguage();
addLanguageSelectorToRtdFlyOutMenu();
document.addEventListener("DOMSubtreeModified", function(e) {
// Notify of change!
debugger;
console.warn("change!", e);
}, false);
});
function hideNavigationForAllButSelectedLanguage() {
......@@ -42,11 +37,25 @@ var nodemcu = nodemcu || {};
* <dd><a href="http://nodemcu.readthedocs.org/en/<branch>/en/">en</a></dd>
* </strong>
* </dl>
*
* UGLY. That menu is added by RTD with an AJAX call after page load. Hence, we need to react to
* the subsequent DOM manipulation using a DOM4 MutationObserver.
*/
function addLanguageSelectorToRtdFlyOutMenu() {
var flyOutWrapper = $('.rst-other-versions .injected');
// only works on RTD
if (flyOutWrapper.length > 0) {
var observer, observerConfig = {childList: true};
var flyOutWrapper = $('.rst-other-versions');
// Create an observer instance
observer = new MutationObserver(function (mutations) {
mutations.forEach(function (mutation) {
debugger;
var newNodes = mutation.addedNodes; // DOM NodeList
if (newNodes !== null) { // If there are new nodes added
var $nodes = $(newNodes); // jQuery set
$nodes.each(function () {
var $node = $(this);
});
var selectedLanguageCode = determineSelectedLanguageCode();
var dl = document.createElement('dl');
var dt = document.createElement('dt');
......@@ -56,7 +65,14 @@ var nodemcu = nodemcu || {};
dl.appendChild(createLanguageLinkFor(languageCode, selectedLanguageCode === languageCode));
}
flyOutWrapper.prepend(dl);
// Later, you can stop observing
observer.disconnect();
}
});
});
// Pass in the target node, as well as the observer options
observer.observe(flyOutWrapper, config);
}
function createLanguageLinkFor(languageCode, isCurrentlySelected) {
var strong;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment