80 lines
2.2 KiB
JavaScript
80 lines
2.2 KiB
JavaScript
function pronterfaceWebInterface_setup(){
|
|
pronterfaceWebInterface_attachAsync();
|
|
}
|
|
|
|
function pronterfaceWebInterface_attachAsync(){
|
|
|
|
var list = [];
|
|
if(document.getElementsByClassName){
|
|
list = document.getElementsByClassName('command');
|
|
}else if(document.getElementsByTagName){
|
|
list = document.getElementsByTagName('a');
|
|
list.concat( document.getElementsByTagName('area') );
|
|
//TODO filter list via checking the className attributes
|
|
}else{
|
|
console && console.error && console.error('unable to gather list of elements');
|
|
return false;
|
|
}
|
|
|
|
for(var i=0; i < list.length; i++){
|
|
list[i].addEventListener && list[i].addEventListener( 'click', function(e){return pronterfaceWebInterface_asyncCommand(null, e);}, true );
|
|
list[i].attachEvent && list[i].attachEvent( 'onclick', function(e){return pronterfaceWebInterface_asyncCommand(null, e);} );
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
|
|
function pronterfaceWebInterface_asyncCommand( urlOrElement, event ){
|
|
|
|
if( ! urlOrElement && event.target)
|
|
urlOrElement = event.target;
|
|
|
|
var url = null;
|
|
if( typeof urlOrElement == 'string' ){
|
|
url = urlOrElement;
|
|
}else{
|
|
url = urlOrElement&&urlOrElement.href;
|
|
}
|
|
|
|
if( typeof url != 'string' ){
|
|
console && console.error && console.error('url not a string', urlOrElement, url);
|
|
return true;
|
|
}
|
|
|
|
var httpRequest;
|
|
if (window.XMLHttpRequest) { // Mozilla, Safari, ...
|
|
httpRequest = new XMLHttpRequest();
|
|
} else if (window.ActiveXObject) { // IE 8 and older
|
|
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
|
|
}
|
|
|
|
if( ! httpRequest ){
|
|
alert('no AJAX available?');
|
|
// follow link
|
|
return true;
|
|
}
|
|
|
|
//onreadystatechange
|
|
//onerror
|
|
httpRequest.open( 'GET', url, true);
|
|
httpRequest.send(null);
|
|
|
|
// don't follow link
|
|
if( event ){
|
|
event.stopImmediatePropagation && event.stopImmediatePropagation();
|
|
event.defaultPrevented = true;
|
|
event.preventDefault && event.preventDefault();
|
|
}
|
|
return false;
|
|
}
|
|
|
|
|
|
if (document.addEventListener) {
|
|
document.addEventListener("DOMContentLoaded", pronterfaceWebInterface_setup, false);
|
|
} else if (document.attachEvent) {
|
|
document.attachEvent("onreadystatechange", pronterfaceWebInterface_setup);
|
|
} else {
|
|
document.onload = pronterfaceWebInterface_setup;
|
|
}
|