programing

여러 window.onload 이벤트 추가

testmans 2023. 6. 29. 19:53
반응형

여러 window.onload 이벤트 추가

ASP.NET 사용자 제어에서 일부 JavaScript를window.onload이벤트:

if (!Page.ClientScript.IsStartupScriptRegistered(this.GetType(), onloadScriptName))
  Page.ClientScript.RegisterStartupScript(this.GetType(), onloadScriptName, 
    "window.onload = function() {myFunction();};", true);            

내 문제는, 만약 이미 무언가가 있다면,onload이벤트를 덮어씁니다.어떻게 하면 두 개의 사용자 컨트롤이 각각 자바스크립트를 실행하도록 허용할 수 있습니까?onload이벤트?

편집: 타사 라이브러리에 대한 정보를 주셔서 감사합니다.기억해 두겠습니다.

제안된 대부분의 "솔루션"은 마이크로소프트에 특화되어 있거나 확장된 라이브러리가 필요합니다.한 가지 좋은 방법이 있습니다.이것은 W3C 호환 브라우저 및 Microsoft IE에서 작동합니다.

if (window.addEventListener) // W3C standard
{
  window.addEventListener('load', myFunction, false); // NB **not** 'onload'
} 
else if (window.attachEvent) // Microsoft
{
  window.attachEvent('onload', myFunction);
}

여전히 추악한 해결책이 있습니다(프레임워크를 사용하는 것보다 훨씬 열등합니다).addEventListener/attachEvent) 즉, 전류를 절약하는 것입니다.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
});

jQuery와 같은 프레임워크는 페이지가 로드될 때가 아니라 DOM이 준비되었을 때 코드를 실행할 수 있는 방법을 제공합니다.

DOM 준비는 HTML이 로드되었지만 이미지나 스타일시트와 같은 외부 구성요소는 로드되지 않았음을 의미하므로 로드 이벤트가 발생하기 훨씬 전에 호출할 수 있습니다.

나는 오늘 비슷한 문제가 있어서 그것을 해결했습니다.index.js다음을 포함합니다.

window.onloadFuncs = [];

window.onload = function()
{
 for(var i in this.onloadFuncs)
 {
  this.onloadFuncs[i]();
 }
}

그리고 onload 이벤트를 첨부하고 싶은 추가 js 파일에서 다음 작업을 수행하면 됩니다.

window.onloadFuncs.push(function(){
 // code here
});

평소에는 jQuery를 사용하지만, 이번에는 잠시 마음을 쓸 수밖에 없는 순수 js로 제한되었습니다!

Mootools는 사용하기 쉬운 또 다른 훌륭한 JavaScript 프레임워크이며, RedWolves가 jQuery에서 말한 것처럼 원하는 만큼의 핸들러를 계속 던질 수 있습니다.

포함된 *.js 파일마다 코드를 함수로 묶습니다.

window.addEvent('domready', function(){
    alert('Just put all your code here');
});

또한 onload 대신 dommady를 사용하는 장점도 있습니다.

사용해 보십시오.

window.attachEvent("onload", myOtherFunctionToCall);

function myOtherFunctionToCall() {
    // do something
}

편집: 이봐요, 저는 방금 파이어폭스로 로그인하고 이것을 다시 포맷할 준비를 하고 있었어요!아직도 IE7로 코드를 포맷하지 않은 것 같습니다.

ASP.NET에 대해서는 잘 모르지만, 두 기능을 모두 호출하는 onload 이벤트에 대한 사용자 지정 함수를 작성하는 것은 어떻습니까?두 가지 기능이 있는 경우 이벤트에 등록한 세 번째 스크립트에서 두 기능을 모두 호출합니다.

실제로 이 MSDN 페이지에 따르면 기능을 여러 번 호출하여 여러 스크립트를 등록할 수 있습니다.다른 키(두 번째 인수)를 사용하면 됩니다.

Page.ClientScript.RegisterStartupScript(
    this.GetType(), key1, function1, true);

Page.ClientScript.RegisterStartupScript(
    this.GetType(), key2, function2, true);

저는 그것이 효과가 있을 거라고 믿습니다.

jquery로 할 수 있습니다.

$(window).load(function () {
    // jQuery functions to initialize after the page has loaded.
});

언급URL : https://stackoverflow.com/questions/9434/add-multiple-window-onload-events

반응형