Dodaj wiele okien.wydarzenia onload
In my ASP.NET Kontrola użytkownika dodaję trochę JavaScript do zdarzenia window.onload
:
if (!Page.ClientScript.IsStartupScriptRegistered(this.GetType(), onloadScriptName))
Page.ClientScript.RegisterStartupScript(this.GetType(), onloadScriptName,
"window.onload = function() {myFunction();};", true);
Mój problem polega na tym, że jeśli coś jest już w zdarzeniu onload
, to to nadpisuje to. Jak mogę zezwolić dwóm kontrolkom użytkownika na uruchamianie JavaScript w zdarzeniu onload
?
Edit: Thanks for the info on third party libraries. Będę o nich pamiętał.
8 answers
Większość" rozwiązań " sugerowanych są specyficzne dla Microsoft, lub wymagają nadętych bibliotek. Jest jeden dobry sposób. Działa to z przeglądarkami zgodnymi z W3C oraz z Microsoft IE.
if (window.addEventListener) // W3C standard
{
window.addEventListener('load', myFunction, false); // NB **not** 'onload'
}
else if (window.attachEvent) // Microsoft
{
window.attachEvent('onload', myFunction);
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-03-27 01:34:31
Nadal jest brzydkie rozwiązanie (które jest znacznie gorsze od używania frameworka lub addEventListener
/attachEvent
) aby zapisać bieżące Zdarzenie onload
:
function addOnLoad(fn)
{
var old = window.onload;
window.onload = function()
{
old();
fn();
};
}
addOnLoad(function()
{
// your code here
});
addOnLoad(function()
{
// your code here
});
addOnLoad(function()
{
// your code here
});
Zauważ, że frameworki takie jak jQuery zapewnią sposób wykonywania kodu, gdy DOM jest gotowy, a nie gdy Strona się ładuje.
Gotowy DOM oznacza, że Twój HTML ma załadowane, ale nie zewnętrzne komponenty, takie jak obrazy lub arkusze stylów, co pozwala na wywołanie Cię na długo przed wywołaniem zdarzenia load.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-11 03:26:45
Miałem podobny problem dzisiaj więc rozwiązałem go mając index.js
z następującym:
window.onloadFuncs = [];
window.onload = function()
{
for(var i in this.onloadFuncs)
{
this.onloadFuncs[i]();
}
}
A w dodatkowych plikach js, które chcę załączyć Zdarzenie onload, po prostu muszę to zrobić:
window.onloadFuncs.push(function(){
// code here
});
Zwykle używam jQuery, ale tym razem ograniczyłem się do czystego js, który zmuszony był przez jakiś czas używać mojego umysłu!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-11 03:27:34
Mootools to kolejny świetny framework JavaScript, który jest dość łatwy w użyciu i jak powiedział RedWolves z jQuery możesz po prostu trzymać tyle programów obsługi, ile chcesz.
Dla każdego *.dołączam plik js, po prostu zawijam kod w funkcję.
window.addEvent('domready', function(){
alert('Just put all your code here');
});
I są również zalety korzystania z domready zamiast onload
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-13 04:16:01
Spróbuj tego:
window.attachEvent("onload", myOtherFunctionToCall);
function myOtherFunctionToCall() {
// do something
}
Edit: Hej, właśnie przygotowywałem się do zalogowania się z Firefoksem i sformatowania tego osobiście! Nadal nie wydaje mi się formatować kodu za pomocą IE7.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-13 03:33:50
I don ' t know a lot about ASP.NET, ale dlaczego nie napisać niestandardowej funkcji dla zdarzenia onload, które z kolei wywołuje obie funkcje dla Ciebie? Jeśli masz dwie funkcje, wywołaj je z trzeciego skryptu, który rejestrujesz w wydarzeniu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-13 03:26:40
Właściwie, według tej strony MSDN, wygląda na to, że możesz wywołać tę funkcję wiele razy, aby zarejestrować wiele skryptów. Wystarczy użyć różnych kluczy(drugi argument).
Page.ClientScript.RegisterStartupScript(
this.GetType(), key1, function1, true);
Page.ClientScript.RegisterStartupScript(
this.GetType(), key2, function2, true);
Uważam, że to powinno zadziałać.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-13 03:39:06
Możesz to zrobić z jquery
$(window).load(function () {
// jQuery functions to initialize after the page has loaded.
});
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-11 03:24:47