2010-10-28 2 views
1

с Javascript, мне интересно, какой лучший способ загрузки моего кода на страницу (без jQuery) после загрузки остальной части страницы. Так как window.onload ...метод перегрузки кроссбраузером с javascript

Я смотрел несколько вариантов, но все они выглядели устаревшими и не совсем кросс-браузерными.

Означает ли это, что было бы лучше? Это делает работу, я получил его от online tools, но я думаю, что он породил от Scott Andrews

function addEvent(obj, evType, fn) { 
if (obj.addEventListener){ 
    obj.addEventListener(evType, fn, false); 
    return true; 
} else if (obj.attachEvent){ 
    var r = obj.attachEvent("on"+evType, fn); 
    return r; 
} else { 
    return false; 
} 
} 

function init() { 
// do something 
} 

addEvent(window, 'load', init); 

Даже если он работает и проходит все мои тесты и кажется достаточно гибким, я немного волновался по поводу такого подхода, потому что

1) Я не совсем понимаю

2) Кажется старым, страница scott andrews с 2001 года!

3) Opera Техническая поддержка не нравится, смотрите «Голос Оперы» на online tools

Это лучший способ сделать это?

ответ

1

От The Javascript Source

/* This script and many more are available free online at 
The JavaScript Source!! http://javascript.internet.com 
Created by: Caleb Duke | http://www.askapache.com/ */ 

//------------------------------------ 
// heavily based on the Quirksmode addEvent contest winner, John Resig 
// addEvent 
function addEvent(obj,type,fn){ 
    if(obj.addEventListener) obj.addEventListener(type,fn,false); 
    else if(obj.attachEvent){ 
     obj["e"+type+fn]=fn; 
     obj[type+fn]=function(){obj["e"+type+fn](window.event);} 
     obj.attachEvent("on"+type,obj[type+fn]); 
    } 
} 

//------------------------------------ 
// removeEvent 
function removeEvent(obj,type,fn){ 
    if(obj.removeEventListener) obj.removeEventListener(type,fn,false); 
    else if(obj.detachEvent){ 
    obj.detachEvent("on"+type,obj[type+fn]); 
    obj[type+fn]=null; 
    obj["e"+type+fn]=null; 
    } 
} 
+0

Спасибо! Это действительно неплохо, мне это нравится. Мне любопытно, однако, нужно ли вообще использовать removeEvent, чтобы не оставлять открытое событие в памяти или что-то еще? Какую функцию я могу передать removeEvent? Я не могу передать тот, который я только что загрузил, что, похоже, сломает материал. – yekta

+0

Вам нужно удалить событие, только если вы хотите избавиться от поведения, которое имеет этот элемент. Так что в общем, вам не обязательно. Память обычно очищается после выхода из браузера страницы. PS. Возможно, вы захотите принять ответы на свои вопросы, таким образом вы получите больше просмотров по следующему вопросу. – Saul

+0

Спасибо :) Все еще привыкание к переполнению стека. – yekta

Смежные вопросы