我有这段代码:
document.getElementById("1").oncontextmenu = function() {
return false
}
禁用右键单击后显示的小窗口(仅在按钮/图像上)。
在我的代码(https://jsfiddle.net/nnuyguat/)上,一切正常,除非我右键单击图像,因为它触发左键单击事件并更改图像,直到我移动鼠标。
另一个相关的问题是,如果我按下左键而不释放然后右键单击(释放右键),它也会改变图像。
我需要通过右键单击来防止图像发生变化。它应该作为浏览器的关闭按钮(除了它是另一个图像,它不会关闭任何东西)。
答案 0 :(得分:2)
您可以使用#include <stdio.h>
#include <string.h>
#include <stdint.h>
#include <stdbool.h>
union u_type
{
unsigned int IntVar;
unsigned char Bytes[sizeof(int)];
}temp;
bool is_big_endian ( void )
{
unsigned int x = 1;
char *c = (char*) &x;
return (bool)*c;
}
int main(void)
{
size_t i;
char string[(sizeof(int)*2)+1] = {0};
uint8_t index = 0;
temp.IntVar = 0x12345678;
printf("%zu\n", sizeof(int));
if (is_big_endian())
{
for (i=1; i<sizeof(int)+1; i++)
{
index += sprintf(&string[index], "%02X", temp.Bytes[sizeof(int)-i]);
}
}
else
{
for (i=0; i<sizeof(int); i++)
{
index += sprintf(&string[index], "%02X", temp.Bytes[i]);
}
}
printf(string);
printf("\n");
return 0;
}
来检查按下了哪个按钮,因为event.button
返回一个数字,表示按下了哪个鼠标按钮。
编辑:
event.button
这应该是正确的,因为我之前从未使用过它。
答案 1 :(得分:1)
右键单击事件不会触发左键单击。它只是激活你的对象。您的图片显示“点击”但不准确。它应该说“活跃”。
其次,数字不是有效的ID。因此,将div从id =“1”重命名为id =“one”或类似。
最后,尝试使用此代码,而不是您的代码:
document.getElementById("one").addEventListener('contextmenu', function(ev) {
ev.preventDefault();
alert('hello from right click');
return false;
}, false);
答案 2 :(得分:1)
右键单击图像更改的问题与您的javascript无关,而与您的CSS有关。当用户激活元素时,:active
CSS伪类匹配。根据规范,这应该仅在使用主鼠标按钮激活元素时,但似乎大多数浏览器都没有正确实现规范。有关信息,请参阅此question。
可能会放弃:active
伪类,并设置一个函数来在左键单击时显式更改内容。
答案 3 :(得分:0)
因为oncontextmenu
事件。删除它,它将工作