fixed issue
This commit is contained in:
@ -0,0 +1,98 @@
|
||||
var languageTabs = null;
|
||||
var languageSpecificElements = null;
|
||||
var availableLanguages = null;
|
||||
|
||||
// Helper function to iterate over an HTMLCollection or NodeList (https://stackoverflow.com/questions/3871547/js-iterating-over-result-of-getelementsbyclassname-using-array-foreach)
|
||||
function forEachElement(collection, func) {
|
||||
Array.prototype.forEach.call(collection, func);
|
||||
}
|
||||
|
||||
function matchLanguage(el, lang) {
|
||||
if (lang == "language-all" || el.classList.contains("language-all")) {
|
||||
return true;
|
||||
} else if ((lang === "language-c" || lang === "language-cpp") && el.classList.contains("language-c-cpp")) {
|
||||
return true;
|
||||
} else {
|
||||
return el.classList.contains(lang);
|
||||
}
|
||||
}
|
||||
|
||||
function setLanguage(lang) {
|
||||
if (languageSpecificElements == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
window.localStorage.setItem("FMOD.Documents.selected-language", lang);
|
||||
|
||||
if (availableLanguages.length > 0 && !availableLanguages.includes(lang)) {
|
||||
lang = availableLanguages[0];
|
||||
}
|
||||
|
||||
forEachElement(languageTabs, function(el) {
|
||||
var ellang = el.attributes['data-language'].value;
|
||||
|
||||
if (ellang === lang) {
|
||||
el.classList.add("selected");
|
||||
} else {
|
||||
el.classList.remove("selected");
|
||||
}
|
||||
});
|
||||
|
||||
forEachElement(languageSpecificElements, function(el) {
|
||||
if (matchLanguage(el, lang)) {
|
||||
el.style.display = 'block';
|
||||
} else {
|
||||
el.style.display = 'none';
|
||||
}
|
||||
});
|
||||
|
||||
window.localStorage.setItem("FMOD.Documents.selected-language", lang);
|
||||
}
|
||||
|
||||
function init() {
|
||||
var docsBody = document.querySelector("div.manual-content.api");
|
||||
|
||||
if (docsBody) {
|
||||
// API docs
|
||||
|
||||
// Setup language tabs
|
||||
languageTabs = docsBody.getElementsByClassName("language-tab");
|
||||
|
||||
forEachElement(languageTabs, function(el) {
|
||||
el.onclick = function() { setLanguage(this.attributes['data-language'].value); }
|
||||
});
|
||||
|
||||
// Cache language specific elements on the page
|
||||
languageSpecificElements = docsBody.querySelectorAll(".language-c, .language-cpp, .language-c-cpp, .language-csharp, .language-javascript");
|
||||
|
||||
// Determine languages used on the page
|
||||
availableLanguages = [];
|
||||
["language-c", "language-cpp", "language-c-cpp", "language-csharp", "language-javascript"].forEach(function(lang) {
|
||||
if (docsBody.querySelector("." + lang) != null) {
|
||||
availableLanguages.push(lang);
|
||||
}
|
||||
});
|
||||
|
||||
if (availableLanguages.indexOf("language-c-cpp") >=0) {
|
||||
if (availableLanguages.indexOf("language-c") < 0) availableLanguages.push("language-c");
|
||||
if (availableLanguages.indexOf("language-cpp") < 0) availableLanguages.push("language-cpp");
|
||||
}
|
||||
// Set initial language
|
||||
var lang = window.localStorage.getItem("FMOD.Documents.selected-language");
|
||||
|
||||
if (lang == null) {
|
||||
lang = "language-cpp";
|
||||
}
|
||||
|
||||
setLanguage(lang);
|
||||
}
|
||||
}
|
||||
|
||||
if (typeof module !== 'undefined') {
|
||||
module.exports = { initLanguageSelector: init };
|
||||
} else {
|
||||
// Call our init function when the document is loaded. (https://plainjs.com/javascript/events/running-code-when-the-document-is-ready-15/)
|
||||
if (document.readyState != 'loading') init();
|
||||
else if (document.addEventListener) document.addEventListener('DOMContentLoaded', init);
|
||||
else document.attachEvent('onreadystatechange', function() { if (document.readyState == 'complete') init(); });
|
||||
}
|
Reference in New Issue
Block a user