簡體   English   中英

需要在鼠標移出時向此代碼添加延遲

[英]Need to add a delay on mouse-out to this code

這是一個名為“ Views Popup”的drupal 6.x模塊的javascript。 https://drupal.org/project/views_popup

當鼠標移出觸發彈出窗口的鏈接時,我似乎無法在彈出窗口上設置延遲。 我在彈出窗口中有標題,預告文本和更多鏈接,用戶需要能夠將鼠標從鏈接(圖像)上移開才能單擊“閱讀更多”鏈接。 我嘗試調整下面代碼中的所有設置,但是似乎沒有與此相關的設置。 我不是編碼人員,但我認為需要添加一些內容才能使此工作有效。 任何建議將不勝感激。

這是代碼:

var popup_time = 0;
var popup_elem = 0;
var popup_show_timer = 0;
var popup_reset_timer = 0;

$(function() {
  popup_reset();

  $(".views-popup").appendTo("body");
});

Drupal.behaviors.viewsPopup = function(context) {
  $(".views-popup-row").mouseover(function() {
      popup_show(this);
    })
    .mouseout(function() {
      popup_hide(this);
    })
    .mousemove(function(e) {
      popup_move(this,e);
    });
}

function popup_move(me,evt){
  var e, top, left;

  if (Drupal.settings.views_popup.follow_mouse){
    left = evt.pageX + 15;
    top = evt.pageY;

    $("#views-popup-" + $(me).attr("id")).css({
      left: left + 'px',
      top: top + 'px'
    });
  }
}


function popup_show(me) {
  var p, e, top, left, pos ;

  var x = $(me).attr("id");

  e = $("#views-popup-" + $(me).attr("id"));
  if (e == popup_elem) {
    return ; // already handled
  }

  if (! Drupal.settings.views_popup.follow_mouse){
    pos  = $(me).offset();
    left = 20 + pos.left - $(document).scrollLeft();
    top  =  2 + pos.top + $(me).outerHeight() - $(document).scrollTop();
    $(e).css({
      left: left + 'px',
      top:  top  + 'px'
    });
  }

  popup_clear_show_timer();

  if (popup_elem) {
    popup_elem.hide();
    popup_time = 500 ;
  }
  popup_elem = e;
  if ( popup_time == 0 ) {
    popup_show_now();
  } else {
    popup_show_timer = setTimeout("popup_show_now();",popup_time);
  }
}


function popup_show_now() {
  popup_show_timer = 0 ;

  if(popup_elem) {
    popup_elem.show();
    clearTimeout(popup_reset_timer);
    popup_time = 0;
  }
}

function popup_clear_show_timer(){
  if (popup_show_timer) {
    clearTimeout(popup_show_timer);
    popup_show_timer = 0;
  }
}

function popup_hide(me) {
  e = $("#views-popup-" + $(me).attr("id"));

  popup_clear_show_timer();
  clearTimeout(popup_reset_timer);

  e.hide();
  if(e == popup_elem) {
    popup_elem = 2;
  }
  popup_reset_timer = setTimeout('popup_reset()',Drupal.settings.views_popup.reset_time);
}

function popup_reset(){
  popup_time = Drupal.settings.views_popup.popup_delay;
}

因此,假設上面的代碼按您想要的方式工作並且希望為隱藏彈出窗口設置延遲,則可以執行的操作是調用javascript的setTimeout(function, delay)函數,該函數在delay毫秒后啟動回調。

function popup_hide(me) {
  e = $("#views-popup-" + $(me).attr("id"));

  popup_clear_show_timer();
  clearTimeout(popup_reset_timer);

  var delay = 1000; // ms
  setTimeout(e.hide, delay); // <------- here

  if(e == popup_elem) {
    popup_elem = 2;
  }
  popup_reset_timer = setTimeout('popup_reset()',Drupal.settings.views_popup.reset_time);
}

1秒鍾后將調用e.hide(該函數)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM