【发布时间】:2014-05-09 07:34:05
【问题描述】:
问题 1:我使用以下代码创建了自己的 contextmenu。
function addFullScreenMenu () {
var menu = document.createElement('menu');
var item = document.createElement('menuitem');
menu.setAttribute('id', 'fsmenu');
menu.setAttribute('type', 'context');
item.setAttribute('label', 'Fullscreen');
item.addEventListener('click', function (e) {
if (window.fullScreen) {
document.body.mozCancelFullScreen();
} else {
document.body.mozRequestFullScreen();
}
});
menu.appendChild(item);
document.body.appendChild(menu);
document.body.setAttribute('contextmenu', 'fsmenu');
}
问题:在 Firefox 中有效,但在 Google Chrome(版本 21.0.1180.81)中失败。
应进行哪些更正以使其不会在 Google Chrome 中失败?
问题2:使用EventListener捕获右键事件
代码:
<script type="text/javascript">
if (document.addEventListener) {
document.addEventListener('contextmenu', function(e) {
alert("You've tried to open context menu"); //gets alerted in firefox and googlechrome
e.preventDefault();
}, false);
} else {
document.attachEvent('oncontextmenu', function() {
alert("You've tried to open context menu");//gets alerted in Internet explorer
window.event.returnValue = false;
});
}
</script>
问题:右键单击的 EventListener 在 Internet Explorer(版本 9)中不起作用
更新:我可以从 Phx answer 解决问题2。需要问题1的解决方案。
【问题讨论】:
-
Internet Explorer 有很多版本,您能准确发布您使用的版本吗?
-
更新了我的问题@Phx
-
jsfiddle.net/bMW4k/1 并且它正在运行右键单击。你能检查一下吗
-
是的,我检查过了。它在那里工作。
-
所以你的代码在 IE 9 上运行。你能检查控制台日志中的 javascript 错误吗?正如我在您的代码中看到的那样,您在这一行中有两个 **。 alert("你试图打开上下文菜单");**//这会抛出一个错误。
标签: javascript google-chrome cross-browser contextmenu menuitem