هل يمكنني تحديد تأخير قبل أن يقوم المتصفح برفع حدث "التمرير"؟

StackOverflow https://stackoverflow.com/questions/344928

  •  19-08-2019
  •  | 
  •  

سؤال

أنا أعمل على تطبيق ويب ASP.NET مطلوب لإظهار نافذة منبثقة عند التمرير.أنا أستخدم الحدث "OnMouseOver" وهو يعمل كما هو متوقع.المشكلة هي أن الحدث يجري على "الشعر الزناد".حتى المرور العرضي للماوس فوق عنصر التحكم يؤدي إلى ظهور النافذة المنبثقة (والتي يجب بعد ذلك رفضها يدويًا).أريد إضافة تأخير حتى لا يؤدي التمرير السريع فوق عنصر التحكم المعني إلى تشغيل الحدث.هل هناك طريقة لتعيين مثل هذا التأخير أم أن هناك حدثًا مختلفًا يمكنني استخدامه للحصول على نفس "حدث التشغيل عند التمرير البطيء"؟

هل كانت مفيدة؟

المحلول

أحد الحلول التي تتبادر إلى ذهني، قد تكون هناك طرق أفضل:

  1. اعمل ال onmouseover استدعاء الوظيفة عبر أ setTimeout تأخير
  2. داخل الوظيفة، تحقق من أن الماوس موجود بالفعل فوق هذا العنصر.

يمكنك أيضًا استخدام ملف onmouseout لمسح setTimeout, ، ولكن سيتعين عليك بعد ذلك تخزين مرجع للمؤقت في متغير عام للوصول إليه مرة أخرى.

نصائح أخرى

ما انتهى بي الأمر به هو على النحو التالي (oRow هو صف الجدول ولكن يمكن أن يكون أي سيطرة):

function ItemMouseOver(oRow, "parameters for the popup") 
{
    oRow.showTimer = window.setTimeout(function() 
        { 
            alert('popup');
        }, 1000);
}
function ItemMouseOut(oRow)
{
    if (oRow.showTimer)
        window.clearTimeout(oRow.showTimer);

في حالة شبكة ASP.NET عرض RowDataBound: أنا واضاف البرمجية التالية:

protected void ReportGridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow && (
        e.Row.RowState == DataControlRowState.Normal 
        || e.Row.RowState == DataControlRowState.Alternate))
    {
        // get the input values for the popup for the row (stuff deleted)
        e.Row.Attributes["onmouseover"] = "javascript:ItemMouseOver(this,
            "parameters for the popup");";
        e.Row.Attributes["onmouseout"] = "javascript:ItemMouseOut(this);";
    } 
}

وأنه يعمل على ما يرام. شكرا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top