changeset 2384:2ddc68898dff

Fix for #81. Browsers which cannot start a Web Audio context will fail with a message listing supported browsers
author Nicholas Jillings <nicholas.jillings@mail.bcu.ac.uk>
date Fri, 20 May 2016 14:04:36 +0100
parents 8696696f3a79
children ef2e0f925be9 5b755f508e2e
files index.html js/core.js js/loader.js test.html
diffstat 4 files changed, 34 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/index.html	Fri May 20 13:29:26 2016 +0100
+++ b/index.html	Fri May 20 14:04:36 2016 +0100
@@ -17,11 +17,7 @@
 		<!-- Use jQuery hosted from Google CDN -->
 		<!--<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>-->
 		<script type="text/javascript" src="js/jquery-2.1.4.js"></script>
-        <script type="text/javascript" src='js/specification.js'></script>
-		<script type="text/javascript" src='js/core.js'></script>
-		<script type="text/javascript" src='js/loudness.js'></script>
-		<script type="text/javascript" src='js/xmllint.js'></script>
-        <script type="text/javascript" src='js/WAVE.js'></script>
+        <script type="text/javascript" src="js/loader.js"></script>
 	</head>
 
 	<body>
--- a/js/core.js	Fri May 20 13:29:26 2016 +0100
+++ b/js/core.js	Fri May 20 14:04:36 2016 +0100
@@ -116,7 +116,7 @@
     }
 }
 
-window.onload = function() {
+var onload = function() {
 	// Function called once the browser has loaded all files.
 	// This should perform any initial commands such as structure / loading documents
 	
@@ -3225,3 +3225,5 @@
 		return this.root;
 	};
 }
+
+onload();
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/js/loader.js	Fri May 20 14:04:36 2016 +0100
@@ -0,0 +1,29 @@
+// Script to load the relevant JS files if the system supports it
+
+window.onload = function() {
+    // First check if the Web Audio API is supported
+    if (window.AudioContext == undefined && window.webkitAudioContext == undefined) {
+        // Display unsuported error message
+        var body = document.getElementsByTagName("body")[0];
+        body.innerHTML = "<h1>Sorry! Your browser is not supported :(</h1><p>Your browser does not support the HTML5 Web Audio API. Please use one of the following supported browsers instead.<p>";
+        var table = document.createElement("table");
+        table.border = "0";
+        table.innerHTML = "<tr><td>Chrome</td><td>v10 or newer</td></tr>";
+        table.innerHTML += "<tr><td>Firefox</td><td>v25 or newer</td></tr><tr><td>Safari (OSX)</td><td> v6 or newer, OSX only</td></tr>";
+        table.innerHTML += "<tr><td>Safari (iOS)</td><td>iOS 6.1 or newer</td></tr>";
+        table.innerHTML += "<tr><td>Edge</td><td>12 or newer</td></tr>";
+        body.appendChild(table);
+    } else {
+        var head = document.getElementsByTagName("head")[0];
+        var src_list = ['js/specification.js', 'js/core.js', 'js/loudness.js', 'js/xmllint.js', 'js/WAVE.js'];
+        for (var i=0; i<src_list.length; i++) {
+            var src = src_list[i];
+            var script = document.createElement("script");
+            script.type = "text/javascript";
+            script.async = false;
+            script.defer = true;
+            script.src = src;
+            head.appendChild(script);
+        }
+    }
+}
\ No newline at end of file
--- a/test.html	Fri May 20 13:29:26 2016 +0100
+++ b/test.html	Fri May 20 14:04:36 2016 +0100
@@ -17,11 +17,7 @@
 		<!-- Use jQuery hosted from Google CDN -->
 		<!--<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>-->
 		<script type="text/javascript" src="js/jquery-2.1.4.js"></script>
-        <script type="text/javascript" src='js/specification.js'></script>
-		<script type="text/javascript" src='js/core.js'></script>
-		<script type="text/javascript" src='js/loudness.js'></script>
-		<script type="text/javascript" src='js/xmllint.js'></script>
-        <script type="text/javascript" src='js/WAVE.js'></script>
+        <script type="text/javascript" src="js/loader.js"></script>
 	</head>
 
 	<body>