]> git.proxmox.com Git - mirror_novnc.git/commitdiff
Use "nomodule" instead of manual check
authorPierre Ossman <ossman@cendio.se>
Fri, 16 Aug 2019 09:18:45 +0000 (11:18 +0200)
committerSamuel Mannehed <samuel@cendio.se>
Tue, 24 Sep 2019 13:34:59 +0000 (15:34 +0200)
Very few browsers are left in the wild that supports modules but not
"nomodule", so let's simplify our handling a bit.

Safari 10 supports modules but not 'nomodule', this means that this
particular version of Safari will be broken. Due to this we have to
bump up the required Safari version to 11.

README.md
utils/use_require.js
vnc.html
vnc_lite.html

index bd34266cfeb2e3f9d102f285def6caa3b75344e8..68759429d04aecd3e0c0a08260db4bcbd3dee53b 100644 (file)
--- a/README.md
+++ b/README.md
@@ -89,7 +89,7 @@ noVNC uses many modern web technologies so a formal requirement list is
 not available. However these are the minimum versions we are currently
 aware of:
 
-* Chrome 49, Firefox 44, Safari 10, Opera 36, IE 11, Edge 12
+* Chrome 49, Firefox 44, Safari 11, Opera 36, IE 11, Edge 12
 
 
 ### Server Requirements
index 248792718c92ffa161d4d70a3a08aae559da3e68..d6e8d6a58c80c3c911dfdcd2ad96fd09fb23564a 100755 (executable)
@@ -105,27 +105,11 @@ function transform_html(legacy_scripts, only_legacy) {
                     new_script += `    <script src="${legacy_scripts[i]}"></script>\n`;
                 }
             } else {
-            // Otherwise detect if it's a modern browser and select
-            // variant accordingly
-                new_script += `\
-    <script type="module">\n\
-        window._noVNC_has_module_support = true;\n\
-    </script>\n\
-    <script>\n\
-        window.addEventListener("load", function() {\n\
-            if (window._noVNC_has_module_support) return;\n\
-            let legacy_scripts = ${JSON.stringify(legacy_scripts)};\n\
-            for (let i = 0;i < legacy_scripts.length;i++) {\n\
-                let script = document.createElement("script");\n\
-                script.src = legacy_scripts[i];\n\
-                script.async = false;\n\
-                document.head.appendChild(script);\n\
-            }\n\
-        });\n\
-    </script>\n`;
-
-            // Original, ES6 modules
+                // Otherwise include both modules and legacy fallbacks
                 new_script += '    <script type="module" crossorigin="anonymous" src="app/ui.js"></script>\n';
+                for (let i = 0;i < legacy_scripts.length;i++) {
+                    new_script += '    <script nomodule src="${legacy_scripts[i]}"></script>\n';
+                }
             }
 
             contents = contents.slice(0, start_ind) + `${new_script}\n` + contents.slice(end_ind);
index b98bb6f3ca1b860525f754a62398925077152454..3183a3d100ba65aecc0aa67f5338ce8d7607a588 100644 (file)
--- a/vnc.html
+++ b/vnc.html
     <!-- promise polyfills promises for IE11 -->
     <script src="vendor/promise.js"></script>
     <!-- ES2015/ES6 modules polyfill -->
-    <script type="module">
-        window._noVNC_has_module_support = true;
-    </script>
-    <script>
-        window.addEventListener("load", function() {
-            if (window._noVNC_has_module_support) return;
-            var loader = document.createElement("script");
-            loader.src = "vendor/browser-es-module-loader/dist/browser-es-module-loader.js";
-            document.head.appendChild(loader);
-        });
-    </script>
+    <script nomodule src="vendor/browser-es-module-loader/dist/browser-es-module-loader.js"></script>
     <!-- actual script modules -->
     <script type="module" crossorigin="anonymous" src="app/ui.js"></script>
     <!-- end scripts -->
index 426d79b354428e973fa240c889969a967e856723..adc6abd22805fbb054950c8988e607cfec8223c8 100644 (file)
     <script src="vendor/promise.js"></script>
 
     <!-- ES2015/ES6 modules polyfill -->
-    <script type="module">
-        window._noVNC_has_module_support = true;
-    </script>
-    <script>
-        window.addEventListener("load", function() {
-            if (window._noVNC_has_module_support) return;
-            const loader = document.createElement("script");
-            loader.src = "vendor/browser-es-module-loader/dist/" +
-                "browser-es-module-loader.js";
-            document.head.appendChild(loader);
-        });
-    </script>
+    <script nomodule src="vendor/browser-es-module-loader/dist/browser-es-module-loader.js"></script>
 
     <!-- actual script modules -->
     <script type="module" crossorigin="anonymous">