Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
43 lines
1,021 B
JavaScript
Executable file
43 lines
1,021 B
JavaScript
Executable file
(function(global) {
|
|
'use strict';
|
|
|
|
var parser = new DOMParser();
|
|
var bodyHTML = {};
|
|
|
|
function getFile(filename, callback) {
|
|
var req = new XMLHttpRequest();
|
|
req.open('GET', filename, false);
|
|
req.onerror = function() {
|
|
throw new Error('Unable to load ' + filename + ' for body HTML');
|
|
};
|
|
req.send();
|
|
if (req.status !== 200) {
|
|
req.onerror();
|
|
}
|
|
|
|
// parse and sanitize the document
|
|
var doc = parser.parseFromString(req.response, 'text/html');
|
|
if (!doc) {
|
|
throw new Error('Unable to parse ' + filename + ' for body HTML');
|
|
}
|
|
|
|
// remove scripts for safety
|
|
var scripts = doc.querySelectorAll('script');
|
|
Array.prototype.forEach.call(scripts, function(scriptNode) {
|
|
scriptNode.parentNode.removeChild(scriptNode);
|
|
});
|
|
|
|
// copy html from body tag
|
|
bodyHTML[filename] = doc.body.innerHTML;
|
|
}
|
|
|
|
function loadBodyHTML(filename) {
|
|
if (!(filename in bodyHTML)) {
|
|
getFile(filename);
|
|
}
|
|
document.body.innerHTML = bodyHTML[filename];
|
|
}
|
|
|
|
global.loadBodyHTML = loadBodyHTML;
|
|
|
|
}(this));
|