MediaWiki:Common.js: Difference between revisions
Jump to navigation
Jump to search
FlyingRagnar (talk | contribs) (adding video accordion jQuery code) |
FlyingRagnar (talk | contribs) (Removing jquery functions instead of just commenting them out) |
||
| (43 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
/* Any JavaScript here will be loaded | /** Begin shared desktop + mobile view script **/ | ||
/* Make sure any changes are copied to MediaWiki:Mobile.js and vice versa. */ | |||
/* Any JavaScript here will be loaded in desktop and mobile view skins on every page load. */ | |||
/* Any JavaScript here will be loaded in both desktop view and mobile view skins on every page load. */ | |||
/*************************************** | /*************************************** | ||
| Line 15: | Line 20: | ||
}; | }; | ||
})(); | })(); | ||
/*********************************************************** | /*********************************************************** | ||
* Name: | * Name: dragscroll | ||
* Description: | * Description: Scrolls a .dragscroll's contents when clicked and dragged. | ||
* | * Additional Notes: https://github.com/asvd/dragscroll | ||
*/ | */ | ||
/** | |||
* @fileoverview dragscroll - scroll area by dragging | |||
* @version 0.0.5 | |||
* | |||
function | * @license MIT, see http://github.com/asvd/intence | ||
{ | * @copyright 2015 asvd <heliosframework@gmail.com> | ||
*/ | |||
(function (root, factory) { | |||
if (typeof define === 'function' && define.amd) { | |||
define(['exports'], factory); | |||
} else if (typeof exports !== 'undefined') { | |||
factory(exports); | |||
if ( | |||
} else { | } else { | ||
factory((root.dragscroll = {})); | |||
} | } | ||
} | }(this, function (exports) { | ||
var _window = window; | |||
var _document = document; | |||
var mousemove = 'mousemove'; | |||
var mouseup = 'mouseup'; | |||
var mousedown = 'mousedown'; | |||
var EventListener = 'EventListener'; | |||
var addEventListener = 'add'+EventListener; | |||
var removeEventListener = 'remove'+EventListener; | |||
var dragged = []; | |||
var reset = function(i, el) { | |||
for (i = 0; i < dragged.length;) { | |||
el = dragged[i++]; | |||
el[removeEventListener](mousedown, el.md, 0); | |||
_window[removeEventListener](mouseup, el.mu, 0); | |||
_window[removeEventListener](mousemove, el.mm, 0); | |||
} | |||
var | |||
var | |||
dragged = _document.getElementsByClassName('dragscroll'); | |||
for (i = 0; i < dragged.length;) { | |||
(function(el, lastClientX, lastClientY, pushed){ | |||
el[addEventListener]( | |||
mousedown, | |||
el.md = function(e) { | |||
pushed = 1; | |||
lastClientX = e.clientX; | |||
lastClientY = e.clientY; | |||
e.preventDefault(); | |||
e.stopPropagation(); | |||
}, 0 | |||
); | |||
_window[addEventListener]( | |||
mouseup, el.mu = function() {pushed = 0;}, 0 | |||
); | |||
_window[addEventListener]( | |||
mousemove, | |||
el.mm = function(e, scroller) { | |||
scroller = el.scroller||el; | |||
if (pushed) { | |||
scroller.scrollLeft -= | |||
(- lastClientX + (lastClientX=e.clientX)); | |||
scroller.scrollTop -= | |||
(- lastClientY + (lastClientY=e.clientY)); | |||
} | |||
}, 0 | |||
); | |||
})(dragged[i++]); | |||
} | } | ||
} | } | ||
if ( | |||
if (_document.readyState == 'complete') { | |||
reset(); | |||
} else { | } else { | ||
_window[addEventListener]('load', reset, 0); | |||
} | } | ||
exports.reset = reset; | |||
})); | |||
/** End shared desktop + mobile view script **/ | |||
Latest revision as of 03:58, 26 February 2022
/** Begin shared desktop + mobile view script **/
/* Make sure any changes are copied to MediaWiki:Mobile.js and vice versa. */
/* Any JavaScript here will be loaded in desktop and mobile view skins on every page load. */
/* Any JavaScript here will be loaded in both desktop view and mobile view skins on every page load. */
/***************************************
* Name: hasClass
* Description: Checks if a element has a specified class name. Uses regular expressions and caching for better performance.
* Maintainers (Wikipedia): [[User:Mike Dillon]], [[User:R. Koot]], [[User:SG]]
* Source: Wikipedia Common.js, imported 2/1/10
* Additional Notes: This is a utility method used in other methods.
*/
var hasClass = (function () {
var reCache = {};
return function (element, className) {
return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className);
};
})();
/***********************************************************
* Name: dragscroll
* Description: Scrolls a .dragscroll's contents when clicked and dragged.
* Additional Notes: https://github.com/asvd/dragscroll
*/
/**
* @fileoverview dragscroll - scroll area by dragging
* @version 0.0.5
*
* @license MIT, see http://github.com/asvd/intence
* @copyright 2015 asvd <heliosframework@gmail.com>
*/
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
define(['exports'], factory);
} else if (typeof exports !== 'undefined') {
factory(exports);
} else {
factory((root.dragscroll = {}));
}
}(this, function (exports) {
var _window = window;
var _document = document;
var mousemove = 'mousemove';
var mouseup = 'mouseup';
var mousedown = 'mousedown';
var EventListener = 'EventListener';
var addEventListener = 'add'+EventListener;
var removeEventListener = 'remove'+EventListener;
var dragged = [];
var reset = function(i, el) {
for (i = 0; i < dragged.length;) {
el = dragged[i++];
el[removeEventListener](mousedown, el.md, 0);
_window[removeEventListener](mouseup, el.mu, 0);
_window[removeEventListener](mousemove, el.mm, 0);
}
dragged = _document.getElementsByClassName('dragscroll');
for (i = 0; i < dragged.length;) {
(function(el, lastClientX, lastClientY, pushed){
el[addEventListener](
mousedown,
el.md = function(e) {
pushed = 1;
lastClientX = e.clientX;
lastClientY = e.clientY;
e.preventDefault();
e.stopPropagation();
}, 0
);
_window[addEventListener](
mouseup, el.mu = function() {pushed = 0;}, 0
);
_window[addEventListener](
mousemove,
el.mm = function(e, scroller) {
scroller = el.scroller||el;
if (pushed) {
scroller.scrollLeft -=
(- lastClientX + (lastClientX=e.clientX));
scroller.scrollTop -=
(- lastClientY + (lastClientY=e.clientY));
}
}, 0
);
})(dragged[i++]);
}
}
if (_document.readyState == 'complete') {
reset();
} else {
_window[addEventListener]('load', reset, 0);
}
exports.reset = reset;
}));
/** End shared desktop + mobile view script **/