1/** 2 * ФÑнкÑÐ¸Ñ Ð´Ð»Ñ debouncing 3 * @param {function} callback ФÑнкÑиÑ, Ð´Ð»Ñ ÐºÐ¾ÑоÑой вÑполнÑеÑÑÑ debouncing 4 * @param {number} timer ÐÑемÑ, коÑоÑое нÑжно подождаÑÑ 5 * @param {string} key ÐлÑÑ, под коÑоÑÑм бÑÐ´ÐµÑ ÑÐ¾Ñ Ñанено дейÑÑвие 6 * @returns {functionDebounce} ФÑнкÑÐ¸Ñ 7 */ 8function debounce(callback, timer, key) { 9 var functionDebounce = function() { 10 if (!this.hasOwnProperty('debounce')) { 11 this.debounce = {}; 12 } 13 14 if (!this.debounce.hasOwnProperty(key)) { 15 this.debounce[key] = {}; 16 } 17 18 if (this.debounce[key].timerResize) { 19 clearTimeout(this.debounce[key].timerResize); 20 } 21 22 this.debounce[key].timerResize = setTimeout(callback, timer); 23 }; 24 25 return functionDebounce; 26} 27 28/** 29 * ÐозвÑаÑÐ°ÐµÑ ÑиÑÐ¸Ð½Ñ ÑлеменÑа Ñо вÑеми оÑÑÑÑпами и Ñамками 30 * @param {HTMLElement} element ÐлеменÑ, Ñ ÐºÐ¾ÑоÑого вÑÑиÑлÑеÑÑÑ ÑиÑÑина 31 * @returns {number} ШиÑина ÑлеменÑа 32 */ 33function getWidthElement(element) { 34 return ( 35 parseFloat(getComputedStyle(element).marginLeft) + 36 parseFloat(getComputedStyle(element).borderLeftWidth) + 37 element.clientWidth + 38 parseFloat(getComputedStyle(element).borderRightWidth) + 39 parseFloat(getComputedStyle(element).marginRight) 40 ); 41} 42 43/** 44 * ÐозвÑаÑÐ°ÐµÑ Ð²ÑÑоÑÑ ÑлеменÑа Ñо вÑеми оÑÑÑÑпами и Ñамками 45 * @param {Element} element ÐлеменÑ, Ñ ÐºÐ¾ÑоÑого вÑÑиÑлÑеÑÑÑ ÑиÑÑина 46 * @returns {number} ÐÑÑоÑа ÑлеменÑа 47 */ 48function getHeightElement(element) { 49 return ( 50 parseFloat(getComputedStyle(element).marginTop) + 51 parseFloat(getComputedStyle(element).borderTopWidth) + 52 element.clientHeight + 53 parseFloat(getComputedStyle(element).borderBottomWidth) + 54 parseFloat(getComputedStyle(element).marginBottom) 55 ); 56} 57 58/** 59 * ÐÑполнÑÐµÑ AJAX-запÑÐ¾Ñ Ð¼ÐµÑодом POST 60 * @param {string} url СÑÑлка, на коÑоÑÑÑ Ð¸Ð´ÐµÑ Ð·Ð°Ð¿ÑÐ¾Ñ 61 * @param {function} callback ФÑнкÑиÑ, коÑоÑÐ°Ñ Ð²ÑполнÑеÑÑÑ, поÑле полÑÑÐµÐ½Ð¸Ñ ÑезÑлÑÑаÑа 62 * @param {FormData} [formData] ÐаннÑе ÑоÑмÑ, коÑоÑÑÑ Ð¾ÑпÑавлÑем 63 * @returns {void} 64 */ 65function ajaxPOST(url, callback, formData) { 66 var formDataPost = !formData ? new FormData() : formData; 67 68 var xhr = new XMLHttpRequest(); 69 70 xhr.open('POST', url); 71 72 xhr.onreadystatechange = function functionOnReady() { 73 if (xhr.readyState === xhr.DONE) { 74 if (xhr.status === 200) { 75 callback(JSON.parse(xhr.responseText)); 76 } else { 77 callback({ 78 error: true, 79 }); 80 } 81 } 82 }; 83 84 xhr.send(formDataPost); 85} 86 87/** 88 * ÐозвÑаÑÐ°ÐµÑ ÑаÑÑиÑение Ñайла 89 * @param {string} fileName ÐÐ¼Ñ Ñайла 90 * @returns {string} РаÑÑиÑение Ñайла 91 */ 92function getExtFile(fileName) { 93 var extFile = /\.[a-zA-Z]+$/.exec(fileName); 94 extFile = extFile[0]; 95 extFile = extFile.replace('.', ''); 96 97 return extFile; 98} 99 100
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.