Clean up Util
This commit removes unused code from Util, and moves the script-loading functionality to WebUtil.
This commit is contained in:
parent
a62b1b352a
commit
72bdd06ea2
|
@ -25,11 +25,10 @@ var UI;
|
||||||
|
|
||||||
/* [begin skip-as-module] */
|
/* [begin skip-as-module] */
|
||||||
// Load supporting scripts
|
// Load supporting scripts
|
||||||
Util.load_scripts(
|
WebUtil.load_scripts(
|
||||||
{'core': ["base64.js", "websock.js", "des.js", "keysymdef.js",
|
{'core': ["base64.js", "websock.js", "des.js", "keysymdef.js",
|
||||||
"xtscancodes.js", "keyboard.js", "input.js", "display.js",
|
"xtscancodes.js", "keyboard.js", "input.js", "display.js",
|
||||||
"inflator.js", "rfb.js", "keysym.js"],
|
"inflator.js", "rfb.js", "keysym.js"]});
|
||||||
'.': ["webutil.js"]});
|
|
||||||
|
|
||||||
window.onscriptsload = function () { UI.load(); };
|
window.onscriptsload = function () { UI.load(); };
|
||||||
/* [end skip-as-module] */
|
/* [end skip-as-module] */
|
||||||
|
|
|
@ -278,4 +278,73 @@ WebUtil.injectParamIfMissing = function (path, param, value) {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Dynamically load scripts without using document.write()
|
||||||
|
// Reference: http://unixpapa.com/js/dyna.html
|
||||||
|
//
|
||||||
|
// Handles the case where load_scripts is invoked from a script that
|
||||||
|
// itself is loaded via load_scripts. Once all scripts are loaded the
|
||||||
|
// window.onscriptsloaded handler is called (if set).
|
||||||
|
WebUtil.get_include_uri = function (root_dir) {
|
||||||
|
return (typeof INCLUDE_URI !== "undefined") ? INCLUDE_URI + root_dir + '/' : root_dir + '/';
|
||||||
|
};
|
||||||
|
WebUtil._loading_scripts = [];
|
||||||
|
WebUtil._pending_scripts = [];
|
||||||
|
WebUtil.load_scripts = function (files_by_dir) {
|
||||||
|
"use strict";
|
||||||
|
var head = document.getElementsByTagName('head')[0], script,
|
||||||
|
ls = WebUtil._loading_scripts, ps = WebUtil._pending_scripts;
|
||||||
|
|
||||||
|
var loadFunc = function (e) {
|
||||||
|
while (ls.length > 0 && (ls[0].readyState === 'loaded' ||
|
||||||
|
ls[0].readyState === 'complete')) {
|
||||||
|
// For IE, append the script to trigger execution
|
||||||
|
var s = ls.shift();
|
||||||
|
//console.log("loaded script: " + s.src);
|
||||||
|
head.appendChild(s);
|
||||||
|
}
|
||||||
|
if (!this.readyState ||
|
||||||
|
(Util.Engine.presto && this.readyState === 'loaded') ||
|
||||||
|
this.readyState === 'complete') {
|
||||||
|
if (ps.indexOf(this) >= 0) {
|
||||||
|
this.onload = this.onreadystatechange = null;
|
||||||
|
//console.log("completed script: " + this.src);
|
||||||
|
ps.splice(ps.indexOf(this), 1);
|
||||||
|
|
||||||
|
// Call window.onscriptsload after last script loads
|
||||||
|
if (ps.length === 0 && window.onscriptsload) {
|
||||||
|
window.onscriptsload();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var root_dirs = Object.keys(files_by_dir);
|
||||||
|
|
||||||
|
for (var d = 0; d < root_dirs.length; d++) {
|
||||||
|
var root_dir = root_dirs[d];
|
||||||
|
var files = files_by_dir[root_dir];
|
||||||
|
|
||||||
|
for (var f = 0; f < files.length; f++) {
|
||||||
|
script = document.createElement('script');
|
||||||
|
script.type = 'text/javascript';
|
||||||
|
script.src = WebUtil.get_include_uri(root_dir) + files[f];
|
||||||
|
//console.log("loading script: " + script.src);
|
||||||
|
script.onload = script.onreadystatechange = loadFunc;
|
||||||
|
// In-order script execution tricks
|
||||||
|
if (Util.Engine.trident) {
|
||||||
|
// For IE wait until readyState is 'loaded' before
|
||||||
|
// appending it which will trigger execution
|
||||||
|
// http://wiki.whatwg.org/wiki/Dynamic_Script_Execution_Order
|
||||||
|
ls.push(script);
|
||||||
|
} else {
|
||||||
|
// For webkit and firefox set async=false and append now
|
||||||
|
// https://developer.mozilla.org/en-US/docs/HTML/Element/script
|
||||||
|
script.async = false;
|
||||||
|
head.appendChild(script);
|
||||||
|
}
|
||||||
|
ps.push(script);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
/* [module] export default WebUtil; */
|
/* [module] export default WebUtil; */
|
||||||
|
|
158
core/util.js
158
core/util.js
|
@ -41,93 +41,6 @@ addFunc(Array, 'push32', function (num) {
|
||||||
num & 0xFF);
|
num & 0xFF);
|
||||||
});
|
});
|
||||||
|
|
||||||
// IE does not support map (even in IE9)
|
|
||||||
//This prototype is provided by the Mozilla foundation and
|
|
||||||
//is distributed under the MIT license.
|
|
||||||
//http://www.ibiblio.org/pub/Linux/LICENSES/mit.license
|
|
||||||
addFunc(Array, 'map', function (fun /*, thisp*/) {
|
|
||||||
"use strict";
|
|
||||||
var len = this.length;
|
|
||||||
if (typeof fun != "function") {
|
|
||||||
throw new TypeError();
|
|
||||||
}
|
|
||||||
|
|
||||||
var res = new Array(len);
|
|
||||||
var thisp = arguments[1];
|
|
||||||
for (var i = 0; i < len; i++) {
|
|
||||||
if (i in this) {
|
|
||||||
res[i] = fun.call(thisp, this[i], i, this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return res;
|
|
||||||
});
|
|
||||||
|
|
||||||
// IE <9 does not support indexOf
|
|
||||||
//This prototype is provided by the Mozilla foundation and
|
|
||||||
//is distributed under the MIT license.
|
|
||||||
//http://www.ibiblio.org/pub/Linux/LICENSES/mit.license
|
|
||||||
addFunc(Array, 'indexOf', function (elt /*, from*/) {
|
|
||||||
"use strict";
|
|
||||||
var len = this.length >>> 0;
|
|
||||||
|
|
||||||
var from = Number(arguments[1]) || 0;
|
|
||||||
from = (from < 0) ? Math.ceil(from) : Math.floor(from);
|
|
||||||
if (from < 0) {
|
|
||||||
from += len;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (; from < len; from++) {
|
|
||||||
if (from in this &&
|
|
||||||
this[from] === elt) {
|
|
||||||
return from;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
});
|
|
||||||
|
|
||||||
// From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
|
|
||||||
if (!Object.keys) {
|
|
||||||
Object.keys = (function () {
|
|
||||||
'use strict';
|
|
||||||
var hasOwnProperty = Object.prototype.hasOwnProperty,
|
|
||||||
hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'),
|
|
||||||
dontEnums = [
|
|
||||||
'toString',
|
|
||||||
'toLocaleString',
|
|
||||||
'valueOf',
|
|
||||||
'hasOwnProperty',
|
|
||||||
'isPrototypeOf',
|
|
||||||
'propertyIsEnumerable',
|
|
||||||
'constructor'
|
|
||||||
],
|
|
||||||
dontEnumsLength = dontEnums.length;
|
|
||||||
|
|
||||||
return function (obj) {
|
|
||||||
if (typeof obj !== 'object' && (typeof obj !== 'function' || obj === null)) {
|
|
||||||
throw new TypeError('Object.keys called on non-object');
|
|
||||||
}
|
|
||||||
|
|
||||||
var result = [], prop, i;
|
|
||||||
|
|
||||||
for (prop in obj) {
|
|
||||||
if (hasOwnProperty.call(obj, prop)) {
|
|
||||||
result.push(prop);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (hasDontEnumBug) {
|
|
||||||
for (i = 0; i < dontEnumsLength; i++) {
|
|
||||||
if (hasOwnProperty.call(obj, dontEnums[i])) {
|
|
||||||
result.push(dontEnums[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
};
|
|
||||||
})();
|
|
||||||
}
|
|
||||||
|
|
||||||
// PhantomJS 1.x doesn't support bind,
|
// PhantomJS 1.x doesn't support bind,
|
||||||
// so leave this in until PhantomJS 2.0 is released
|
// so leave this in until PhantomJS 2.0 is released
|
||||||
//This prototype is provided by the Mozilla foundation and
|
//This prototype is provided by the Mozilla foundation and
|
||||||
|
@ -368,77 +281,6 @@ Util.decodeUTF8 = function (utf8string) {
|
||||||
* Cross-browser routines
|
* Cross-browser routines
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
// Dynamically load scripts without using document.write()
|
|
||||||
// Reference: http://unixpapa.com/js/dyna.html
|
|
||||||
//
|
|
||||||
// Handles the case where load_scripts is invoked from a script that
|
|
||||||
// itself is loaded via load_scripts. Once all scripts are loaded the
|
|
||||||
// window.onscriptsloaded handler is called (if set).
|
|
||||||
Util.get_include_uri = function (root_dir) {
|
|
||||||
return (typeof INCLUDE_URI !== "undefined") ? INCLUDE_URI + root_dir + '/' : root_dir + '/';
|
|
||||||
};
|
|
||||||
Util._loading_scripts = [];
|
|
||||||
Util._pending_scripts = [];
|
|
||||||
Util.load_scripts = function (files_by_dir) {
|
|
||||||
"use strict";
|
|
||||||
var head = document.getElementsByTagName('head')[0], script,
|
|
||||||
ls = Util._loading_scripts, ps = Util._pending_scripts;
|
|
||||||
|
|
||||||
var loadFunc = function (e) {
|
|
||||||
while (ls.length > 0 && (ls[0].readyState === 'loaded' ||
|
|
||||||
ls[0].readyState === 'complete')) {
|
|
||||||
// For IE, append the script to trigger execution
|
|
||||||
var s = ls.shift();
|
|
||||||
//console.log("loaded script: " + s.src);
|
|
||||||
head.appendChild(s);
|
|
||||||
}
|
|
||||||
if (!this.readyState ||
|
|
||||||
(Util.Engine.presto && this.readyState === 'loaded') ||
|
|
||||||
this.readyState === 'complete') {
|
|
||||||
if (ps.indexOf(this) >= 0) {
|
|
||||||
this.onload = this.onreadystatechange = null;
|
|
||||||
//console.log("completed script: " + this.src);
|
|
||||||
ps.splice(ps.indexOf(this), 1);
|
|
||||||
|
|
||||||
// Call window.onscriptsload after last script loads
|
|
||||||
if (ps.length === 0 && window.onscriptsload) {
|
|
||||||
window.onscriptsload();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
var root_dirs = Object.Keys(files_by_dir);
|
|
||||||
|
|
||||||
for (var d = 0; d < root_dirs.length; d++) {
|
|
||||||
var root_dir = root_dirs[d];
|
|
||||||
var files = files_by_dir[root_dir];
|
|
||||||
|
|
||||||
for (var f = 0; f < files.length; f++) {
|
|
||||||
script = document.createElement('script');
|
|
||||||
script.type = 'text/javascript';
|
|
||||||
script.src = Util.get_include_uri(root_dir) + files[f];
|
|
||||||
//console.log("loading script: " + script.src);
|
|
||||||
script.onload = script.onreadystatechange = loadFunc;
|
|
||||||
// In-order script execution tricks
|
|
||||||
if (Util.Engine.trident) {
|
|
||||||
// For IE wait until readyState is 'loaded' before
|
|
||||||
// appending it which will trigger execution
|
|
||||||
// http://wiki.whatwg.org/wiki/Dynamic_Script_Execution_Order
|
|
||||||
ls.push(script);
|
|
||||||
} else {
|
|
||||||
// For webkit and firefox set async=false and append now
|
|
||||||
// https://developer.mozilla.org/en-US/docs/HTML/Element/script
|
|
||||||
script.async = false;
|
|
||||||
head.appendChild(script);
|
|
||||||
}
|
|
||||||
ps.push(script);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
Util.getPosition = function(obj) {
|
Util.getPosition = function(obj) {
|
||||||
"use strict";
|
"use strict";
|
||||||
// NB(sross): the Mozilla developer reference seems to indicate that
|
// NB(sross): the Mozilla developer reference seems to indicate that
|
||||||
|
|
|
@ -44,7 +44,7 @@
|
||||||
|
|
||||||
function message(str) {
|
function message(str) {
|
||||||
console.log(str);
|
console.log(str);
|
||||||
cell = $D('messages');
|
cell = document.getElementById('messages');
|
||||||
cell.innerHTML += msg_cnt + ": " + str + newline;
|
cell.innerHTML += msg_cnt + ": " + str + newline;
|
||||||
cell.scrollTop = cell.scrollHeight;
|
cell.scrollTop = cell.scrollHeight;
|
||||||
msg_cnt++;
|
msg_cnt++;
|
||||||
|
@ -94,23 +94,23 @@
|
||||||
|
|
||||||
for (b = 0; b < blist.length; b++) {
|
for (b = 0; b < blist.length; b++) {
|
||||||
if (blist[b] === num) {
|
if (blist[b] === num) {
|
||||||
$D('button' + blist[b]).style.backgroundColor = "black";
|
document.getElementById('button' + blist[b]).style.backgroundColor = "black";
|
||||||
$D('button' + blist[b]).style.color = "lightgray";
|
document.getElementById('button' + blist[b]).style.color = "lightgray";
|
||||||
} else {
|
} else {
|
||||||
$D('button' + blist[b]).style.backgroundColor = "";
|
document.getElementById('button' + blist[b]).style.backgroundColor = "";
|
||||||
$D('button' + blist[b]).style.color = "";
|
document.getElementById('button' + blist[b]).style.color = "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
window.onload = function() {
|
window.onload = function() {
|
||||||
canvas = new Display({'target' : $D('canvas')});
|
canvas = new Display({'target' : document.getElementById('canvas')});
|
||||||
keyboard = new Keyboard({'target': document,
|
keyboard = new Keyboard({'target': document,
|
||||||
'onKeyPress': rfbKeyPress});
|
'onKeyPress': rfbKeyPress});
|
||||||
Util.addEvent(document, 'keypress', rawKey);
|
Util.addEvent(document, 'keypress', rawKey);
|
||||||
Util.addEvent(document, 'keydown', rawKey);
|
Util.addEvent(document, 'keydown', rawKey);
|
||||||
Util.addEvent(document, 'keyup', rawKey);
|
Util.addEvent(document, 'keyup', rawKey);
|
||||||
mouse = new Mouse({'target': $D('canvas'),
|
mouse = new Mouse({'target': document.getElementById('canvas'),
|
||||||
'onMouseButton': mouseButton,
|
'onMouseButton': mouseButton,
|
||||||
'onMouseMove': mouseMove});
|
'onMouseMove': mouseMove});
|
||||||
|
|
||||||
|
@ -121,10 +121,10 @@
|
||||||
|
|
||||||
if ('ontouchstart' in document.documentElement) {
|
if ('ontouchstart' in document.documentElement) {
|
||||||
message("Touch device detected");
|
message("Touch device detected");
|
||||||
$D('button-selection').style.display = "inline";
|
document.getElementById('button-selection').style.display = "inline";
|
||||||
$D('button1').onclick = function(){ selectButton(1) };
|
document.getElementById('button1').onclick = function(){ selectButton(1) };
|
||||||
$D('button2').onclick = function(){ selectButton(2) };
|
document.getElementById('button2').onclick = function(){ selectButton(2) };
|
||||||
$D('button4').onclick = function(){ selectButton(4) };
|
document.getElementById('button4').onclick = function(){ selectButton(4) };
|
||||||
selectButton();
|
selectButton();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -49,7 +49,7 @@
|
||||||
msg("Loading " + fname);
|
msg("Loading " + fname);
|
||||||
|
|
||||||
// Load supporting scripts
|
// Load supporting scripts
|
||||||
Util.load_scripts({
|
WebUtil.load_scripts({
|
||||||
'core': ["base64.js", "websock.js", "des.js", "keysym.js",
|
'core': ["base64.js", "websock.js", "des.js", "keysym.js",
|
||||||
"keysymdef.js", "xtscancodes.js", "keyboard.js",
|
"keysymdef.js", "xtscancodes.js", "keyboard.js",
|
||||||
"input.js", "display.js", "rfb.js", "inflator.js"],
|
"input.js", "display.js", "rfb.js", "inflator.js"],
|
||||||
|
|
|
@ -59,7 +59,7 @@
|
||||||
if (fname) {
|
if (fname) {
|
||||||
message("Loading " + fname);
|
message("Loading " + fname);
|
||||||
// Load supporting scripts
|
// Load supporting scripts
|
||||||
Util.load_scripts({
|
WebUtil.load_scripts({
|
||||||
'core': ["base64.js", "websock.js", "des.js", "keysym.js",
|
'core': ["base64.js", "websock.js", "des.js", "keysym.js",
|
||||||
"keysymdef.js", "xtscancodes.js", "keyboard.js",
|
"keysymdef.js", "xtscancodes.js", "keyboard.js",
|
||||||
"input.js", "display.js", "rfb.js", "inflator.js"],
|
"input.js", "display.js", "rfb.js", "inflator.js"],
|
||||||
|
|
1
vnc.html
1
vnc.html
|
@ -220,6 +220,7 @@
|
||||||
</div>
|
</div>
|
||||||
<!-- begin scripts -->
|
<!-- begin scripts -->
|
||||||
<script src="core/util.js"></script>
|
<script src="core/util.js"></script>
|
||||||
|
<script src="app/webutil.js"></script>
|
||||||
<script src="app/ui.js"></script>
|
<script src="app/ui.js"></script>
|
||||||
<!-- end scripts -->
|
<!-- end scripts -->
|
||||||
|
|
||||||
|
|
|
@ -43,6 +43,7 @@
|
||||||
src='http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js'></script>
|
src='http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js'></script>
|
||||||
-->
|
-->
|
||||||
<script src="core/util.js"></script>
|
<script src="core/util.js"></script>
|
||||||
|
<script src="app/webutil.js"></script>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body style="margin: 0px;">
|
<body style="margin: 0px;">
|
||||||
|
@ -77,7 +78,7 @@
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
// Load supporting scripts
|
// Load supporting scripts
|
||||||
Util.load_scripts({
|
WebUtil.load_scripts({
|
||||||
'core': ["base64.js", "websock.js", "des.js", "keysymdef.js",
|
'core': ["base64.js", "websock.js", "des.js", "keysymdef.js",
|
||||||
"xtscancodes.js", "keyboard.js", "input.js", "display.js",
|
"xtscancodes.js", "keyboard.js", "input.js", "display.js",
|
||||||
"inflator.js", "rfb.js", "keysym.js"],
|
"inflator.js", "rfb.js", "keysym.js"],
|
||||||
|
|
Loading…
Reference in New Issue