123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- /**
- * mui target(action>popover>modal>tab>toggle)
- */
- (function($, window, document) {
- /**
- * targets
- */
- $.targets = {};
- /**
- * target handles
- */
- $.targetHandles = [];
- /**
- * register target
- * @param {type} target
- * @returns {$.targets}
- */
- $.registerTarget = function(target) {
- target.index = target.index || 1000;
- $.targetHandles.push(target);
- $.targetHandles.sort(function(a, b) {
- return a.index - b.index;
- });
- return $.targetHandles;
- };
- window.addEventListener($.EVENT_START, function(event) {
- var target = event.target;
- var founds = {};
- for (; target && target !== document; target = target.parentNode) {
- var isFound = false;
- $.each($.targetHandles, function(index, targetHandle) {
- var name = targetHandle.name;
- if (!isFound && !founds[name] && targetHandle.hasOwnProperty('handle')) {
- $.targets[name] = targetHandle.handle(event, target);
- if ($.targets[name]) {
- founds[name] = true;
- if (targetHandle.isContinue !== true) {
- isFound = true;
- }
- }
- } else {
- if (!founds[name]) {
- if (targetHandle.isReset !== false)
- $.targets[name] = false;
- }
- }
- });
- if (isFound) {
- break;
- }
- }
- });
- window.addEventListener('click', function(event) { //解决touch与click的target不一致的问题(比如链接边缘点击时,touch的target为html,而click的target为A)
- var target = event.target;
- var isFound = false;
- for (; target && target !== document; target = target.parentNode) {
- if (target.tagName === 'A') {
- $.each($.targetHandles, function(index, targetHandle) {
- var name = targetHandle.name;
- if (targetHandle.hasOwnProperty('handle')) {
- if (targetHandle.handle(event, target)) {
- isFound = true;
- event.preventDefault();
- return false;
- }
- }
- });
- if (isFound) {
- break;
- }
- }
- }
- });
- })(mui, window, document);
|