Полезные java script функции

Рутина - самый опасный враг программиста :) Именно на поиски и написание рутинного кода уходит очень много времени. Всех функций не запомнишь. Одни программисты пишут код с нуля, другие гуглят, третьи используют уже написанное при создании новых проектов. Время деньги а без денег нету счастья :) хотя я так не думаю. Короче привожу несколько полезных java script конструкций которые я использую чаще всего.

GetElementsByClass by Dustin Diaz

function getElementsByClass(searchClass,tag,node) {
var classElements = new Array();
if ( node == null )
node = document;
if ( tag == null )
tag = '*';
var els = node.getElementsByTagName(tag);
var elsLen = els.length;
var pattern = new RegExp('(^|\\\\s)'+searchClass+'(\\\\s|$)');
for (i = 0, j = 0; i < elsLen; i++) {
if ( pattern.test(els[i].className) ) {
classElements[j] = els[i];
j++;
}
}
return classElements;
}

addLoadEvent() by Simon Willison

function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
}
else {
window.onload = function() {
oldonload();
func();
}
}
}

Определение координат объекта:

function getAbsoluteTop(obj) {
var posTop = 0;
while (obj.offsetParent)
{posTop += obj.offsetTop; obj = obj.offsetParent;}
return posTop;
}
function getAbsoluteLeft(obj) {
var posLeft = 0;
while (obj.offsetParent)
{posLeft += obj.offsetLeft; obj = obj.offsetParent;}
return posLeft;
}

Определение размеров видимой области браузера:

function getSize(){
var _size = {};
if (window.innerHeight) {
_size.h = window.innerHeight; _size.w = window.innerWidth;
} else {
_size.h = document.documentElement.clientHeight;
_size.w = document.documentElement.clientWidth;
}
return _size;
}

Кроссплатформенный код определения размеров браузера и позиций скроллбаров:

function f_clientWidth() {
return f_filterResults (
window.innerWidth ? window.innerWidth : 0,
document.documentElement ? document.documentElement.clientWidth : 0,
document.body ? document.body.clientWidth : 0
);
}
function f_clientHeight() {
return f_filterResults (
window.innerHeight ? window.innerHeight : 0,
document.documentElement ? document.documentElement.clientHeight : 0,
document.body ? document.body.clientHeight : 0
);
}
function f_scrollLeft() {
return f_filterResults (
window.pageXOffset ? window.pageXOffset : 0,
document.documentElement ? document.documentElement.scrollLeft : 0,
document.body ? document.body.scrollLeft : 0
);
}
function f_scrollTop() {
return f_filterResults (
window.pageYOffset ? window.pageYOffset : 0,
document.documentElement ? document.documentElement.scrollTop : 0,
document.body ? document.body.scrollTop : 0
);
}
function f_filterResults(n_win, n_docel, n_body) {
var n_result = n_win ? n_win : 0;
if (n_docel && (!n_result || (n_result > n_docel)))
n_result = n_docel;
return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result;
}

Еще один вариант определения scrollTop и scrollLeft:

function getBodyScrollTop() {
return self.pageYOffset || (document.documentElement && document.documentElement.scrollTop) || (document.body && document.body.scrollTop);
}

function getBodyScrollLeft() {
return self.pageXOffset || (document.documentElement && document.documentElement.scrollLeft) || (document.body && document.body.scrollLeft);
}

Функция проверки полей формы перед отправкой:

function SendForm() {

if (document.forms[0].name.value == "") {
alert('Пожалуйста, введите Ваше имя');
document.mailform.name.focus();
return false
}

if (document.forms[0].email.value == "") {
alert('Пожалуйста, введите электронный адрес');
document.mailform.email.focus();
return false
}

return true;
}

Установка обработчика события onload для страницы:

function setGlobalOnLoad(f) {
var root = window.addEventListener || window.attachEvent ? window : document.addEventListener ? document : null
if (root){
if(root.addEventListener) root.addEventListener("load", f, false)
else if(root.attachEvent) root.attachEvent("onload", f)
} else {
if(typeof window.onload == 'function') {
var existing = window.onload
window.onload = function() {
existing()
f()
}
} else {
window.onload = f
}
}
}

Фильтр ввода для текстового поля

<input type="text" onkeypress="return testKey(event)">

<script type="text/javascript">
function testKey(e)
{
// Make sure to use event.charCode if available
var key = (typeof e.charCode == 'undefined' ? e.keyCode : e.charCode);

// Ignore special keys
if (e.ctrlKey || e.altKey || key < 32)
return true;

key = String.fromCharCode(key);
return /\w/.test(key);
}
</script>

Генератор случайных чисел на java script

function getrandom() {

var min_random = 0;
var max_random = 10;

max_random++;

var range = max_random - min_random;
var n=Math.floor(Math.random()*range) + min_random;

return n;
}

Функций получения значения елемента radiobutton

function getRadioValue(name)
{
for (var i = 0; i < name.length; i++)
{
if (name[i].checked == true)
{
return name[i].value;
}
}
return null;
}

Функция "выхода" из фрейма

if (window.parent.frames.length == 0) {
location.href="index.htm?"+location.pathname;
}

Определение типа и версии браузера

var browser_name = navigator.appName;
var browser_version = parseFloat(navigator.appVersion);

Дата модификации документа

document.write ("Дата последней модификации: "+ document.lastModified);

Ссылка сделать страничку стартовой

<p><a href="#" onClick="this.style.behavior='url(#default#homepage)';
this.setHomePage('http://www.yoursite.com/'); return false;">
Сделать стартовой страницей</a></p>

Добавление странички в "Избранное"

<p><a href="#" onClick="window.external.addFavorite
('http://www.yoursite.com/', 'Description'); return false;">
Добавить сайт в Избранное</a></p>

Распечатка страницы

var browser_name = navigator.appName;

function printit(){

if (browser_name == "Netscape") {
window.print() ;
} else {
var WebBrowser = '<object id="WebBrowser1" width=0 height=0
classid="clsid:8856F961-340A-11D0-A96B-00C04FD705A2"></object>';
document.body.insertAdjacentHTML('beforeEnd', WebBrowser);
WebBrowser1.ExecWB(6, 2);
}

Определение координат курсора мышки

function mouseCoords(ev) {
if (ev.pageX || ev.pageY) {
return {x:ev.pageX, y:ev.pageY};
}

var docBody = document.documentElement
? document.documentElement
: document.body;

return {
x: ev.clientX + docBody.scrollLeft - docBody.clientLeft,
y: ev.clientY + docBody.scrollTop - docBody.clientTop
};
}

Пока все. Но, продолжение следует ...

0 коммент.:

Отправить комментарий