Examples using a script loader

This makes it possible to run examples hosted on hosts other than localhost. To get that version by default, debug.html has been renamed to index.html.
This commit is contained in:
ahocevar
2012-09-25 19:05:53 +02:00
parent c696356586
commit ef383ee7b6
6 changed files with 62 additions and 3 deletions

59
demos/loader.js Normal file
View File

@@ -0,0 +1,59 @@
/**
* Loader to add the plovr generated script to the document. The following
* default values may be overridden with query string parameters:
*
* * hostname - the current hostname
* * port - 9810
* * mode - ADVANCED
* * id - id param in loader.js query string; defaults to 'ol' if not set
*
* Usage:
*
* <script src="../loader.js?id=my-demo"></script>
*/
(function() {
var scripts = document.getElementsByTagName('script');
var params = {
hostname: window.location.hostname,
port: '9810',
mode: 'ADVANCED',
id: 'ol'
};
var chunks, search, pair;
var src, index, id, i;
for (i = scripts.length - 1; i >= 0; --i) {
src = scripts[i].getAttribute('src');
if (~(index = src.indexOf('loader.js?'))) {
// script params
search = src.substr(index + 10);
chunks = search ? search.split('&') : [];
for (i = chunks.length - 1; i >= 0; --i) {
pair = chunks[i].split('=');
params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);
}
break;
}
}
// url params
search = window.location.search.substring(1);
chunks = search ? search.split('&') : [];
for (i = chunks.length - 1; i >= 0; --i) {
pair = chunks[i].split('=');
params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);
}
var host = params.hostname + ':' + params.port;
delete params.hostname;
delete params.port;
var pairs = [];
for (var key in params) {
pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(params[key]));
}
var url = 'http://' + host + '/compile?' + pairs.join('&');
document.write('<script type="text/javascript" src="' + url + '"></script>');
}());