UNPKG

2.49 kBJavaScriptView Raw
1/**
2 * This loader is used for the hosted examples. It is used in place of the
3 * development loader (examples/loader.js).
4 *
5 * The loader loads ol.js and the example's script in "production" mode; it
6 * loads Closure Library's base.js, ol-deps.js, the example's "goog.require"
7 * script, and the example's script in "development" mode.
8 *
9 * The ol.js and ol-deps.js scripts are built using OpenLayers's Makefile. They are
10 * located in the ../build/ directory, relative to this script.
11 *
12 * The script must be named loader.js.
13 *
14 * Usage:
15 *
16 * <script src="../loader.js?id=my-demo"></script>
17 */
18
19(function() {
20
21 var i, pair;
22
23 var href = window.location.href, start, end, paramsString, pairs,
24 pageParams = {};
25 if (href.indexOf('?') > 0) {
26 start = href.indexOf('?') + 1;
27 end = href.indexOf('#') > 0 ? href.indexOf('#') : href.length;
28 paramsString = href.substring(start, end);
29 pairs = paramsString.split(/[&;]/);
30 for (i = 0; i < pairs.length; ++i) {
31 pair = pairs[i].split('=');
32 if (pair[0]) {
33 pageParams[decodeURIComponent(pair[0])] =
34 decodeURIComponent(pair[1]);
35 }
36 }
37 }
38
39 var scripts = document.getElementsByTagName('script');
40 var src, index, search, chunks, scriptParams = {};
41 for (i = scripts.length - 1; i >= 0; --i) {
42 src = scripts[i].getAttribute('src');
43 if (~(index = src.indexOf('loader.js?'))) {
44 search = src.substr(index + 10);
45 chunks = search ? search.split('&') : [];
46 for (i = chunks.length - 1; i >= 0; --i) {
47 pair = chunks[i].split('=');
48 if (pair[0]) {
49 scriptParams[decodeURIComponent(pair[0])] =
50 decodeURIComponent(pair[1]);
51 }
52 }
53 break;
54 }
55 }
56
57 var raw = pageParams.mode && pageParams.mode.toLowerCase() === 'raw';
58
59 var scriptId = encodeURIComponent(scriptParams.id);
60 if (!raw) {
61 document.write('<scr' + 'ipt type="text/javascript" src="../build/ol.js"></scr' + 'ipt>');
62 } else {
63 window.CLOSURE_NO_DEPS = true; // we've got our own deps file
64 document.write('<scr' + 'ipt type="text/javascript" src="../closure-library/closure/goog/base.js"></scr' + 'ipt>');
65 document.write('<scr' + 'ipt type="text/javascript" src="../build/ol-deps.js"></scr' + 'ipt>');
66 document.write('<scr' + 'ipt type="text/javascript" src="' + scriptId + '-require.js"></scr' + 'ipt>');
67 }
68 document.write('<scr' + 'ipt type="text/javascript" src="' + scriptId + '.js"></scr' + 'ipt>');
69}());