You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress中PrettyPhoto模态框打开时禁用键盘导航的技术问询

解决PrettyPhoto模态框打开时阻止键盘导航的方案

这问题我之前做项目时也碰到过,其实不用复杂的钩子,直接利用PrettyPhoto自带的回调函数就能搞定,给你一步步说清楚:

1. 先定义全局状态变量

首先声明一个全局布尔变量,用来追踪PrettyPhoto模态框的开闭状态:

// 初始状态为false,代表模态框未打开
let isPrettyPhotoOpen = false;

2. 初始化PrettyPhoto时绑定回调

在你初始化PrettyPhoto的代码里,加上它自带的打开/关闭回调,用来更新这个状态变量:

// 假设你是这样初始化PP的,把回调加进去
$("a[rel^='prettyPhoto']").prettyPhoto({
  // 这里放你原本的PP配置,比如theme、social_tools之类的
  callback_on_open: function() {
    // 模态框打开时,把状态设为true
    isPrettyPhotoOpen = true;
  },
  callback_on_close: function() {
    // 模态框关闭时,把状态重置为false
    isPrettyPhotoOpen = false;
  }
});

小提示:如果你的PP版本比较旧,回调名称可能是onOpen和onClose,可以翻一下你手里的PP源码确认下,一般在初始化配置的注释里会写清楚。

3. 在键盘导航代码里添加判断逻辑

最后,在你写的文章键盘导航的键盘事件监听代码里,先判断这个状态变量,如果模态框处于打开状态,直接跳过导航逻辑:

document.addEventListener('keydown', function(e) {
  // 核心判断:如果PP模态框开着,就不执行导航
  if (isPrettyPhotoOpen) return;

  // 下面是你原本的键盘导航逻辑,比如左右箭头切换文章
  if (e.key === 'ArrowLeft') {
    // 左箭头跳转上一篇的代码
    console.log('跳转到上一篇');
  } else if (e.key === 'ArrowRight') {
    // 右箭头跳转下一篇的代码
    console.log('跳转到下一篇');
  }
});

这样就能完美实现需求了——当PP模态框打开时,键盘导航的代码会直接跳过,只有模态框关闭后才会正常响应键盘操作。

内容的提问来源于stack exchange,提问作者Chris J. Zähller

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:54:34