当用户按下Esc键时阻止fancybox关闭

10

我在一个页面上使用了fancybox,但我将其作为设计特征而非jQuery模态框使用。我试图阻止用户关闭它(因为这会“破坏”页面的设计)。我已经成功地阻止用户点击fancybox之外的区域来关闭它,但是我无法阻止按下Esc键时关闭它。我尝试过'closeOnEscape': false,但似乎没有效果。以下是我的代码。有什么建议或需要我做些什么吗?

$(document).ready(function () {
    $.fancybox({
        'width': '340px',
        'height': '100%',
        'autoScale': true,
        'transitionIn': 'none',
        'transitionOut': 'none',
        'type': 'iframe',
        'href': 'form.php',
        'hideOnContentClick': false,
        'closeBtn' : false,
        'helpers' : { 
            'overlay' : {
                'closeClick': false,
            }
        }
    });
});

1
你使用的是哪个版本的fancybox? - Stuart Burrows
这并不会对你有所帮助,但如果你将其用作设计特征,那么只需构建类似的东西(在视觉上)可能会更容易。 - Damien
http://stackoverflow.com/questions/3000884/why-is-it-when-i-set-closeonescape-to-false-and-then-closeonescape-to-true-j - Arpit
1
API选项 modal: 如果设置为 true,将禁用导航和关闭。 - JFK
3个回答

16

查看fancyBox文档中的keys选项:

keys
定义用于浏览、关闭和幻灯片播放的键盘按键
对象;默认值:

{
    next : {
        13 : 'left', // enter
        34 : 'up',   // page down
        39 : 'left', // right arrow
        40 : 'up'    // down arrow
    },
    prev : {
        8  : 'right',  // backspace
        33 : 'down',   // page up
        37 : 'right',  // left arrow
        38 : 'down'    // up arrow
    },
    close  : [27], // escape key
    play   : [32], // space - start/stop slideshow
    toggle : [70]  // letter "f" - toggle fullscreen
}

只需将close的值映射为null


如果您正在使用fancyBox2,请将此属性添加到您的代码中:

$.fancybox({
  // all your other options here
  ...,
  keys : {
    close  : null
  }
}

你能把我需要的代码融入到我的现有代码中吗?我对JavaScript或fancyBox没有任何经验。 - Jake Neal
1
奇怪的是,这个答案对我没用。我发现 modal: true, 似乎起作用了。 - Jake Neal
将关闭键设置为null会在缩略图模式下关闭fancybox时导致错误。最好将其设置为0以避免出现错误。 - Markus Coetzee

2

@moonwave99给出了fancybox2的正确答案。 如果你使用的是v1.3+版本,那么你必须使用:

enableEscapeButton: false

参考资料: http://fancybox.net/api


1
正如其他人在评论中提到的那样,modal: true 完美地运作了...
$.fancybox({
    modal: true
});

来自文档...

modal - 如果设置为true,则禁用导航和关闭。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接