mirror of
https://github.com/wintercms/winter.git
synced 2024-06-28 05:33:29 +02:00
81 lines
2.1 KiB
JavaScript
81 lines
2.1 KiB
JavaScript
/*
|
|
* October JavaScript foundation library.
|
|
*
|
|
* Light-weight utility functions for working with native DOM events. The functions
|
|
* work with events directly, without jQuery, using the native JavaScript and DOM
|
|
* features.
|
|
*
|
|
* Usage examples:
|
|
*
|
|
* $.oc.foundation.event.stop(ev)
|
|
*
|
|
*/
|
|
+function ($) { "use strict";
|
|
if ($.oc === undefined)
|
|
$.oc = {}
|
|
|
|
if ($.oc.foundation === undefined)
|
|
$.oc.foundation = {}
|
|
|
|
var Event = {
|
|
/*
|
|
* Returns the event target element.
|
|
* If the second argument is provided (string), the function
|
|
* will try to find the first parent with the tag name matching
|
|
* the argument value.
|
|
*/
|
|
getTarget: function(ev, tag) {
|
|
var target = ev.target ? ev.target : ev.srcElement
|
|
|
|
if (tag === undefined)
|
|
return target
|
|
|
|
var tagName = target.tagName
|
|
|
|
while (tagName != tag) {
|
|
target = target.parentNode
|
|
|
|
if (!target)
|
|
return null
|
|
|
|
tagName = target.tagName
|
|
}
|
|
|
|
return target
|
|
},
|
|
|
|
stop: function(ev) {
|
|
if (ev.stopPropagation)
|
|
ev.stopPropagation()
|
|
else
|
|
ev.cancelBubble = true
|
|
|
|
if(ev.preventDefault)
|
|
ev.preventDefault()
|
|
else
|
|
ev.returnValue = false
|
|
},
|
|
|
|
pageCoordinates: function(ev) {
|
|
if (ev.pageX || ev.pageY) {
|
|
return {
|
|
x: ev.pageX,
|
|
y: ev.pageY
|
|
}
|
|
}
|
|
else if (ev.clientX || ev.clientY) {
|
|
return {
|
|
x: (ev.clientX + document.body.scrollLeft + document.documentElement.scrollLeft),
|
|
y: (ev.clientY + document.body.scrollTop + document.documentElement.scrollTop)
|
|
}
|
|
}
|
|
|
|
return {
|
|
x: 0,
|
|
y: 0
|
|
}
|
|
}
|
|
}
|
|
|
|
$.oc.foundation.event = Event;
|
|
}(window.jQuery); |