Skip to content

Instantly share code, notes, and snippets.

View termi's full-sized avatar

Егор Халимоненко termi

View GitHub Profile
void function() {
"use strict";
var global = this;
//Mini alternative https://gist.github.com/2428561
//Uses
//https://gist.github.com/1384398
//https://gist.github.com/1235332
@termi
termi / scrollIntoView_polyfill.js
Last active March 6, 2019 15:22
Support centering an element when scrolling into view w3c issue: https://www.w3.org/Bugs/Public/show_bug.cgi?id=17152 Original code from http://jsbin.com/ilecok/16/
////////////////////////////////////////////////////////////////////////////////
// Author: Thaddee Tyl 2012.
// The following work is under CC0.
void function() {
// Hook the polyfill.
Element.prototype._scrollIntoView = function scrollIntoView(options) {
if( !this.ownerDocument )return;
@termi
termi / index.js
Last active December 12, 2015 05:39
IE8 Array.prototype.splice.apply test
(function() {
var _Array_slice_ = Array.prototype['slice'];
var _Array_splice_ = Array.prototype.splice;
if( Function.prototype.bind === void 0 ) Function.prototype.bind = function (context) {
var args = _Array_slice_.call(arguments, 1), self = this;
return function (){ return self.apply(context, args.concat(_Array_slice_.call(arguments, 0))); };
};
function makeArray(l) {
@termi
termi / IElt9_getComputedStyle.js
Last active December 12, 2015 01:28
getComputedStyle for IE < 9
void function() {
var global = this
/** @const */
, _Array_slice = Array.prototype.slice
/** @const */
, _Function_apply = Function.prototype.apply
@termi
termi / crossBrowser_initKeyboardEvent.js
Last active June 13, 2023 02:01
Cross-browser initKeyboardEvent
void function() {//closure
var global = this
, _initKeyboardEvent_type = (function( e ) {
try {
e.initKeyboardEvent(
"keyup" // in DOMString typeArg
, false // in boolean canBubbleArg
, false // in boolean cancelableArg
, global // in views::AbstractView viewArg
@termi
termi / build.js
Created November 19, 2012 09:32
JS GCC compile or remove GCC globals
#!/usr/bin/env node
if (process.argv.length < 3) {
console.error('No enough parameters');
process.exit();
}
const fs = require('fs')
, path = require('path')
;
@termi
termi / index.js
Created November 7, 2012 12:15
offset[Left/Top]
var getScrollX
, getScrollX
, _document_documentElement = document.documentElement
;
document.compatMode === "CSS1Compat" ?
((_getScrollX = function(){return _document_documentElement.scrollLeft}), (_getScrollY = function(){return _document_documentElement.scrollTop}))
:
((_getScrollX = function(){return document.body.scrollTop}), (_getScrollY = function(){return document.body.scrollLeft}))
;
@termi
termi / index.js
Created November 6, 2012 08:36
Add/Remove listeners
void function(exports) {
var _browser_msie = window["eval"] && window["eval"]("/*@cc_on 1;@*/") && +((/msie (\d+)/i.exec(navigator.userAgent) || [])[1] || 0) || void 0
, _document_documentElement = document.documentElement
, _document_body = document.body
, _append = function(obj, extention) {
for(var key in extention)
@termi
termi / index.js
Created November 1, 2012 14:33
getElementsByClassName-like function for all browsers (IE6+ / w3c)
var
/** @type {RegExp} @const */
RE__getElementsByClassName = /\s*(\S+)\s*/g
/** @type {string} @const */
, STRING_FOR_RE__getElementsByClassName = '(?=(^|.*\\s)$1(\\s|$))'
/** @type {boolean} @const */
, IS_IELT9 = !/\[native\s+code\]/i.test(document.getElementsByClass + "")
/** @type {RegExp} @const */
, RE__querySelector__dottes = /\./g
;
@termi
termi / index.js
Created October 25, 2012 11:07
New DOM4 classList polyfill for browsers with classList support
void function(global, tmp) {
if("classList" in tmp) {
void function(_add, _remove, _Array_forEach_) {
this["add"] = function() {
_Array_forEach_.call(arguments, _add, this);
};
this["remove"] = function() {
_Array_forEach_.call(arguments, _remove, this);
};
this["toggle"] = function(token, forse) {