Javascript 如果我创建了右键单击菜单,如何保持原始的复制和粘贴功能?

Javascript 如果我创建了右键单击菜单,如何保持原始的复制和粘贴功能?,javascript,copy-paste,Javascript,Copy Paste,我刚开始学习右键菜单。 我想将其用于一些基本功能,如youtube搜索、图像搜索等。 但问题是,当我覆盖默认的浏览器右键单击菜单时,我可以对复制和粘贴功能说再见,据我所知,我无法保留它。 我听说了一些jquery javascript插件,可以执行复制和粘贴功能,但问题不是太安全,而且不总是工作,浏览器安全策略也总是更改,所以这不是我保留此功能的最佳方式。 知道如何使用默认的复制粘贴选项创建自己的javascript菜单吗?正如您所指出的,大多数解决方案都使用类似“隐藏”Flash对象的东西来处

我刚开始学习右键菜单。
我想将其用于一些基本功能,如youtube搜索、图像搜索等。
但问题是,当我覆盖默认的浏览器右键单击菜单时,我可以对复制和粘贴功能说再见,据我所知,我无法保留它。
我听说了一些jquery javascript插件,可以执行复制和粘贴功能,但问题不是太安全,而且不总是工作,浏览器安全策略也总是更改,所以这不是我保留此功能的最佳方式。

知道如何使用默认的复制粘贴选项创建自己的javascript菜单吗?

正如您所指出的,大多数解决方案都使用类似“隐藏”Flash对象的东西来处理来自javascript的剪贴板交互。这是因为虽然您可以在所有浏览器中创建一个,但在文档中触发它将不会产生任何效果或导致错误。影响剪贴板仍然是一种沙盒行为

我将附和上面的一些评论,并建议您不要更换现有的菜单,如果可能的话。但是,在Firefox和其他浏览器中,当它们添加对它的支持时,有一种变通方法,可以将菜单项添加到现有的上下文菜单中:

<menu type="context" id="mymenu">
  <menuitem label="Do something" id="something"></menuitem>
</menu>
<div contextmenu="mymenu">
    Any context menu in this element will have the items added to it from mymenu.
</div>
这方面的规范可能仍在制定中,Firefox的实现并不完全遵循规范。不过,目前它确实可以作为添加您自己的项目和保留现有上下文菜单的一种方式


实例:

我个人不喜欢网站创建自定义右键单击菜单。你可以右键点击元素,而且我喜欢复制粘贴:-如果我们完成了,我们会创建一个带有evbery功能的网站浏览选项,所以如果用户喜欢,就使用它。否则,这在评论框中是非常好的,一旦你看到它,如果你传递一个到文本区域的链接,你就可以看到菜单。但我不喜欢实现这一点,如果我找不到一个方法,我可以保持复制和粘贴。因为这将是一个糟糕的设计。最好的方法是在一些元素旁边有一个“图标”(或者在一个角落有粘性),当它被左键单击时,它会显示一个带有额外操作选项的菜单。这比右键单击菜单要好。我们有一个按钮,但没人用。。。只是复制和粘贴。。。我讨厌这样,但不知何故我需要注意用户,因为他可以很容易地嵌入视频。如果我创建了一个非常大的按钮,也没关系,因为每个人都忽略它,因为他们相信广告。或者一些不好的东西。用一个更新了评论。嗯,谢谢!我真的很抱歉只在firefox上工作。有一个,它只是沙盒。这是正常的web代码,不允许使用它。这都是关于安全的。读取剪贴板上的任意web代码听起来不是件好事。最后,出于可用性方面的原因,我认为上述在现有上下文菜单中添加内容的方法是一种更好的方法。更新了我的答案。不管MDN在示例中显示了什么,元素似乎需要一个结束标记。在您的示例中,浏览器会自动为您创建一个菜单项,并将第二个菜单项包含在第一个菜单项中,从而使其不显示。由于Stackoverflow表明我们这里有点“闲聊”,如果您有进一步的问题或访问Stackoverflow的聊天,我建议您开始一个新的顶级问题。我也是。我最初的示例没有结束标记,因为当我第一次发现这些问题时,他们不需要结束标记。
document.getElementById("something").addEventListener("click", function () { ... });