这是一个名为“视图弹出窗口”的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;
}
你已经过分复杂了。删除一堆这样的代码,并写下如下内容:A)显示悬停在链接上时,B)隐藏悬停时,当你不在链接上。一旦你完成了这个工作,就可以使用onMouseOver,onMouseOut事件调用这些函数...现在,当它工作时,调用另一个函数,使用延迟计时器调用onMouseOver函数。现在你的代码工作。 – blakev
谢谢,布莱克。我没有写上面的代码。它来自Drupal 6x模块。我不认为我应该删除上面代码的一堆代码由于几个原因:1)我可能会与模块打破别的东西; 2)我不是编码员,也不知道我在做什么!看起来像在这里添加一些定时延迟到mouseout函数会做的伎俩:.mouseout(function(){ popup_hide(this); }) – user1800643
看到答案,祝你好运!看起来插件中的setTimeouts将函数放在引号中 - 将它们转换为字符串。如果添加了这些,请删除引号和括号。括号开始调用,缺少括号只是传递函数本身的引用,稍后调用。 – blakev