我想在最终选择之后获取 HTML onContextMenu 的事件,而不是在初始单击时
I want to get an event for an HTML onContextMenu *after* the final selection, not at initial click
如果我这样做
<a href ... oncontextmenu="myFunction(event)">
当用户右键单击链接时,在上下文菜单出现之前,将调用它。 但是我想在选择上下文菜单项后获取事件。 理想情况下,只有当他们选择了"在...中打开链接"时,才能访问他们实际单击的内容。
更喜欢非 JQuery 的答案,但如果需要,JQuery 是可以的。
补充:解释我想做什么:
当用户直接点击另一个(商业酒店查找器)网站的链接时,我会显示一个小警报"如果您预订房间,请输入XXXX作为礼品代码")。 如果他们右键单击并在新选项卡中打开链接等,也想发出此警报,.,
添加#2:感谢您的及时和直接的回答。 请参阅下面的"答案",了解我最终做了什么。 如果还有其他选择,我将保留这个问题。
Javascript 中是不可能的,但您可以通过将默认上下文菜单替换为自定义上下文菜单来实现您正在寻找的内容。
你不能。contextmenu
事件的主要目的是允许页面将浏览器的上下文菜单替换为其自身呈现为 HTML 的菜单。浏览器上下文菜单的内容未由任何 HTML 标准指定,并且会因浏览器而异。上下文菜单中的大多数选项都引用页面范围之外的操作(例如,"复制"、"查看页面源代码"、"在新窗口中打开链接"、"另存为"等),并且选择它们时不会在页面上触发事件,除非正在执行的操作通常会触发事件。(例如,选择"打印"可能会触发onbeforeprint
和onafterprint
事件。
WHATWG HTML5规范指定了一个menu
元素,可用于将项目添加到浏览器的上下文菜单中,但目前仅在Firefox下受支持。所以这可能也不是一个真正的选择。
只是一个想法,我不确定你想做什么,但我会尝试在设定的延迟下调用该函数,如下所示:
<a href="javascript:void(0)" oncontextmenu="setTimeout(function(){alert('You called the context menu.')}, 3000);">Right-Click Me, then wait for 3 seconds.</a>
唯一的缺点是,一旦调用了alert()
,上下文菜单就会被隐藏。
希望这有帮助!
我最终要做的是在我的网站上插入一个中间页面。
路线(我正在使用node&Express)不是直接转到外部站点,而是打开一个带有解释性文本的中间页面,一个复选框"知道了,不要再显示此页面"(在我的情况下,答案存储在localStorage中,其他人可能存储在服务器上)和一个大的绿色OK按钮,将您带到外部站点。
如果路由包含查询"?directXXX=true"(从 localStorage 读取),则跳过中间页并立即重定向到外部页。
这样我得到了一个更好的解释性页面,带有图像等......(对话框,即使您使用类似 alertify 的东西,看起来也很笨拙)我可以"拦截"对外部站点的所有调用。
- 将单击事件添加到数据表
- 将单击事件添加到附加的项目中
- 在IE8中不起作用的元素上触发单击事件
- 链接上的IE10 jquery句柄单击事件不起作用
- 如何使用纯 JavaScript 在所有浏览器中区分左/右/中键单击事件
- 如何在master中调用细节网格作为单击事件
- 兰吉 |如何在 span 标签上使用单击事件删除突出显示的文本
- 如何隐藏按钮单击事件上的占位符
- 复选框,然后单击事件处理
- 如何使用for循环添加所有按钮'单击事件
- 手柄'img'单击事件并插入'alt'使用jQuery将属性转换为文本框
- 覆盖单击事件不起作用
- 单击事件打开两个弹出菜单
- 单击事件不起作用
- 从其他元素上的单击事件访问image src属性
- 单击事件中的ajax请求后重定向
- 如何缩放地图框传单中的标记单击事件
- 在没有焦点的情况下捕获画布上的第一次单击事件
- 通过单击事件识别画布上的对象
- 如何将单击事件添加到JQuery中动态添加的元素中