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

书签小工具中如何阻止Shift+右键触发的上下文菜单并识别图片源?

Shift+右键识别图片源的书签工具解决方案

一、用contextmenu事件实现(推荐)

直接监听contextmenu事件,同时满足Shift键按下+点击目标是图片两个条件时,获取图片地址并阻止默认右键菜单弹出:

document.addEventListener('contextmenu', function(event) {
  // 检查Shift键是否按下,且点击元素是图片
  if (event.shiftKey && event.target.tagName.toLowerCase() === 'img') {
    const imgSrc = event.target.src;
    if (imgSrc) {
      console.log('图片地址:', imgSrc);
      // 这里可以替换成你需要的操作,比如复制到剪贴板
      // navigator.clipboard.writeText(imgSrc);
    } else {
      alert('未找到图片地址');
    }
    // 阻止默认右键菜单弹出
    event.preventDefault();
  }
});

关键说明:

  • event.target比srcElement兼容性更好,优先使用
  • 必须判断点击的元素是<img>,避免误触发其他元素的右键操作
  • 只有符合条件时才调用event.preventDefault(),不影响正常右键菜单使用

二、用mousedown事件优化实现

如果想用mousedown事件,需要额外判断右键点击(event.button === 2),同时在符合条件时阻止默认行为:

document.addEventListener('mousedown', function(event) {
  // 检查Shift键按下+右键点击+目标是图片
  if (event.shiftKey && event.button === 2 && event.target.tagName.toLowerCase() === 'img') {
    const imgSrc = event.target.src;
    if (imgSrc) {
      console.log('图片地址:', imgSrc);
      // 自定义操作,比如复制地址
    } else {
      alert('未找到图片地址');
    }
    // 阻止默认行为(包括右键菜单弹出)
    event.preventDefault();
    // 部分浏览器可能需要额外阻止事件冒泡
    event.stopPropagation();
  }
});

原代码问题说明:

  1. 没有判断右键点击,导致按Shift+左键也会触发
  2. 未在符合条件时调用preventDefault(),所以拦不住右键菜单
  3. 使用srcElement兼容性不如target,建议替换

内容的提问来源于stack exchange,提问作者Mark Highton Ridley

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 05:27:08