Experiment with MutationObserver
This commit is contained in:
parent
6a8fb8fe28
commit
10e602e5bd
|
@ -8,11 +8,6 @@ var nodemcu = nodemcu || {};
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
hideNavigationForAllButSelectedLanguage();
|
hideNavigationForAllButSelectedLanguage();
|
||||||
addLanguageSelectorToRtdFlyOutMenu();
|
addLanguageSelectorToRtdFlyOutMenu();
|
||||||
document.addEventListener("DOMSubtreeModified", function(e) {
|
|
||||||
// Notify of change!
|
|
||||||
debugger;
|
|
||||||
console.warn("change!", e);
|
|
||||||
}, false);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
function hideNavigationForAllButSelectedLanguage() {
|
function hideNavigationForAllButSelectedLanguage() {
|
||||||
|
@ -42,11 +37,25 @@ var nodemcu = nodemcu || {};
|
||||||
* <dd><a href="http://nodemcu.readthedocs.org/en/<branch>/en/">en</a></dd>
|
* <dd><a href="http://nodemcu.readthedocs.org/en/<branch>/en/">en</a></dd>
|
||||||
* </strong>
|
* </strong>
|
||||||
* </dl>
|
* </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() {
|
function addLanguageSelectorToRtdFlyOutMenu() {
|
||||||
var flyOutWrapper = $('.rst-other-versions .injected');
|
var observer, observerConfig = {childList: true};
|
||||||
// only works on RTD
|
var flyOutWrapper = $('.rst-other-versions');
|
||||||
if (flyOutWrapper.length > 0) {
|
|
||||||
|
// 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 selectedLanguageCode = determineSelectedLanguageCode();
|
||||||
var dl = document.createElement('dl');
|
var dl = document.createElement('dl');
|
||||||
var dt = document.createElement('dt');
|
var dt = document.createElement('dt');
|
||||||
|
@ -56,7 +65,14 @@ var nodemcu = nodemcu || {};
|
||||||
dl.appendChild(createLanguageLinkFor(languageCode, selectedLanguageCode === languageCode));
|
dl.appendChild(createLanguageLinkFor(languageCode, selectedLanguageCode === languageCode));
|
||||||
}
|
}
|
||||||
flyOutWrapper.prepend(dl);
|
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) {
|
function createLanguageLinkFor(languageCode, isCurrentlySelected) {
|
||||||
var strong;
|
var strong;
|
||||||
|
|
Loading…
Reference in New Issue