شرح - remove html element javascript




إضافة أحداث window.onload متعددة (7)

في عنصر تحكم مستخدم 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 ؟

تحرير: شكرا للمعلومات على مكتبات الطرف الثالث. سأبقيهم في ذهنهم



جرب هذا:

window.attachEvent("onload", myOtherFunctionToCall);

function myOtherFunctionToCall() {
    // do something
}

تحرير: مهلا ، كنت مجرد الحصول على استعداد لتسجيل الدخول مع Firefox وإعادة هذا بنفسي! لا يبدو أن تنسيق الرمز بالنسبة لي مع IE7.


كان لدي مشكلة مماثلة اليوم لذلك أنا حلها وجود index.js مع ما يلي:

window.onloadFuncs = [];

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

وفي ملفات js الإضافية التي أريد إرفاقها بحدث onload ، يجب أن أقوم بهذا فقط:

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

أنا عادة استخدام jQuery رغم ذلك ، ولكن هذه المرة كنت يقتصر على شبيبة نقية التي أجبرت على استخدام ذهني لفترة من الوقت!


لا أعرف الكثير عن ASP.NET ، ولكن لماذا لا نكتب دالة مخصصة لحدث onload الذي بدوره يستدعي كلا الدالتين لك؟ إذا كان لديك وظيفتين ، اتصل بهما من نص ثالث تقوم بالتسجيل في الحدث.


معظم "الحلول" المقترحة هي خاصة بـ Microsoft ، أو تتطلب مكتبات منتفخة. وإليك طريقة واحدة جيدة. هذا يعمل مع المتصفحات المتوافقة مع 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);
}

هل فكرت في استخدام شيء مثل jQuery الذي يوفر إطارًا لتنظيف إضافة معالجات أحداث متعددة؟


Mootools هو إطار عمل جافاسكريبت عظيم آخر سهل الاستخدام إلى حد ما ، وكما قال ريد وولفز مع jQuery يمكنك فقط الاحتفاظ بالقش مثل العديد من المتداولين كما تريد.

لكل ملف * .js أقوم بتضمين التفاف التعليمة البرمجية فقط في دالة.

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

وهناك أيضا مزايا استخدام domready بدلا من التحميل الزائد





listener