2011-10-01 54 views
1

我们使用prettyPhoto:关闭键盘导航jQuery的prettyphoto

http://www.no-margin-for-errors.com/projects/prettyphoto-jquery-lightbox-clone/ 对于我们的产品组合。这使我们能够显示视频,图像或SWF。 当我们显示使用箭头键的SWF游戏时,它与prettyPhoto导航冲突。 看到我们已经添加的游戏的这个例子:

http://www.letsdesign.co.uk/#!prettyPhoto/0/ 这在IE浏览器中破坏了PC的恶化。但是这款游戏可以在Mac版的Firefox上播放,这是我们希望所有浏览器的状态。

我们希望找到一种方法来关闭PrettyPhoto导航(通过使用箭头键),因此它不会与任何游戏中的控件相冲突。我们还有其他游戏要添加,但在修复之前我们无法添加它们。有没有人有解决这个问题? 在此先感谢。

回答

1

在Prettyphoto的JavaScript文件设置keyboard_shortcuts

+0

此解决方案对我无效。我使用的是以下代码: '' – kdev

1

我找到了一个真正哈克的方式来禁用箭头键的功能。在我的jquery.prettyPhoto.js文件中,我刚刚注释掉了$.prettyPhoto.changePage('previous');$.prettyPhoto.changePage('next');

这将意味着箭头导航根本不起作用,但我不需要它为我的项目。

2

尝试通过将“keyboard_shortcuts”参数设置为false来禁用包括(左和右)的键盘快捷键后,我采取了重写changePage方法并从changepicturecallback方法调用方法。我觉得这样可以很容易地选择不同的prettyPhoto体验,而无需编辑核心文件(我永远不会推荐)。

$("a[rel^='prettyPhoto']").prettyPhoto({ 
    changepicturecallback: function(){ 
    $.prettyPhoto.changePage = function(){}; 
    }, 
}); 

看看prettyPhoto params,它们在组合正确时非常强大。

0

不幸的是,有一个错误。我修改了代码,现在效果很好。

这是错误。有一段这样的代码:

switch(t.keyCode){case 37:e.prettyPhoto.changePage("previous");t.preventDefault();break;case 39:e.prettyPhoto.changePage("next");t.preventDefault();break;case 27:if(!settings.modal)e.prettyPhoto.close();t.preventDefault();break 

改变这种由下面的

if (settings.keyboard_shortcuts) { switch(t.keyCode){case 37:e.prettyPhoto.changePage("previous");t.preventDefault();break;case 39:e.prettyPhoto.changePage("next");t.preventDefault();break;case 27:if(!settings.modal)e.prettyPhoto.close();t.preventDefault();break} 

现在笔者的设置,叫keyboard_shortcuts会是不错的,如果你把它设置为false。

这对于缩小的代码是有效的,我没有检查在非缩小代码中是否存在该错误(如果可用)。

祝你好运!

George