diff --git a/examples/test.html b/examples/test.html index 6283bf4..829812d 100644 --- a/examples/test.html +++ b/examples/test.html @@ -7,8 +7,9 @@

DOMEventBridge

-

Now is the time for all good men to come to the aid of their country.

-

A deferred

+

(hint: try both clicking on the links/buttons and also keyboard focusing via <tab> and activating with keyboard <space> or <enter>)

+

Now is the time for all good men to come to the aid of their country. (events on this button handled immediately)

+

A deferred (handling of events on this button deferred for 10 seconds after page load)

diff --git a/examples/test.js b/examples/test.js index dc9f2ad..6d77931 100644 --- a/examples/test.js +++ b/examples/test.js @@ -2,11 +2,11 @@ // NOTE: this example uses jQuery only for demo purposes - global.EventHub.DOMBridge.bridgeFromContainer("body"); + global.EventHub.DOMBridge.bridgeFrom("body"); // example 1 (handling a 'nav' element) global.EventHub.DOMBridge - .filter({ elementType: "nav" }) + .filter({ elementTypes: "nav" }) .on("do",function(el,elementType,evt){ evt.preventDefault(); alert("Navigate to: " + $(el).attr("href")); @@ -15,21 +15,21 @@ // example 2 (additional event types, for a 'popup' element) global.EventHub.DOMBridge - .filter({ elementTypes: ["popup"], selector: "#p1" }) + .filter({ elementTypes: ["popup"], inSelector: "#p1" }) .on("do",function(el,elementType,evt){ alert("Popup '" + $(el).attr("data-val") + "'"); }) .on("start-hover",function(el,elementType,evt){ - $(el).css({"textTransform": "uppercase"}); + $(el).val("yes hovering"); }) .on("end-hover",function(el,elementType,evt){ - $(el).css({"textTransform": ""}); + $(el).val("yes"); }); // example 3 (preserving deferred event handling) var filt = global.EventHub.DOMBridge - .filter({ elementType: "popup", selector: "#p2" }) + .filter({ elementTypes: "popup", inSelector: "#p2" }) .preserve("do") .preserveOnce("start-hover"); @@ -40,26 +40,27 @@ alert("Popup '" + $(el).attr("data-val") + "'"); }) .once("start-hover",function(el,elementType,evt){ - $("#p2").append("hovered!"); + $("#p2").append(" **BUTTON HOVERED**"); }); },10000); // example 4 (handling dom-ready) - global.EventHub.once("dombridge:dom-ready",function(){ + global.EventHub.on("dombridge:dom-ready",function(){ console.log("global: dom-ready"); }); - global.EventHub.DOMBridge.filter(/*empty*/).once("dom-ready",function(){ - console.log("filtered: dom-ready"); + global.EventHub.DOMBridge.events.on("dom-ready",function(){ + console.log("DOMBridge: dom-ready"); }); // example 5 (handling 'tracking' elements found in DOM at page load) + // NOTE: relies on custom bridge event type registered in "trackingelementevent.js" global.EventHub.on("dombridge:tracking",function(el,elementType){ console.log("global: 'tracking' element found, '" + $(el).attr("data-val") + "'"); }); - global.EventHub.DOMBridge.filter(/*empty*/).on("tracking",function(el,elementType){ - console.log("filtered: 'tracking' element found, '" + $(el).attr("data-val") + "'"); + global.EventHub.DOMBridge.events.on("tracking",function(el,elementType){ + console.log("DOMBridge: 'tracking' element found, '" + $(el).attr("data-val") + "'"); }); })(window,jQuery); \ No newline at end of file diff --git a/examples/trackingelementevent.js b/examples/trackingelementevent.js index dca07f2..9204cca 100644 --- a/examples/trackingelementevent.js +++ b/examples/trackingelementevent.js @@ -10,9 +10,9 @@ global.EventHub.preserve("dombridge:tracking"); // search the DOM, once it's ready, for any "tracking" elements - global.EventHub.once("dombridge:dom-ready",function(){ + global.EventHub.DOMBridge.events.on("dom-ready",function(){ $("[rel*='dombridge']").filter("[rel*='tracking']").each(function(){ - global.EventHub.emit("dombridge:tracking",$(this),"tracking"); + global.EventHub.emit("dombridge:tracking",this,"tracking"); }); }); })(window,jQuery); \ No newline at end of file diff --git a/lib/dombridge.js b/lib/dombridge.js index edae1e9..417a805 100644 --- a/lib/dombridge.js +++ b/lib/dombridge.js @@ -2,6 +2,9 @@ // From: https://gist.github.com/atk/1034464 if(!Object.keys){Object.keys=function(o,k,r){r=[];for(k in o)r.hasOwnProperty.call(o,k)&&r.push(k);return r}} +// shim for Object.isArray() in non-ES5 +if (!Object.isArray){Object.isArray = function(obj){return Object.prototype.toString.call(obj) === "[object Array]";};} + // shim for Array#indexOf() in non-ES5 if(!Array.prototype.indexOf){Array.prototype.indexOf=function(e){var d=Object(this);var c=d.length>>>0;if(c===0){return-1}var a=0;if(arguments.length>1){a=Number(arguments[1]);if(a!=a){a=0}else if(a!=0&&a!=Infinity&&a!=-Infinity){a=(a>0||-1)*Math.floor(Math.abs(a))}}if(a>=c){return-1}var b=a>=0?a:Math.max(c-Math.abs(a),0);for(;b