【问题标题】:How can I prevent one from being able to right click on flash embed如何防止一个人能够右键单击 Flash embed
【发布时间】:2012-02-29 21:45:27
【问题描述】:

我需要取消 Flash 嵌入的默认右键菜单。

我已将 menu 设置为 false,并在右键单击事件中使用了停止默认功能,但仍显示菜单。

另外,我无权访问 .fla,因为 flash 对象不是我创建的。

提前致谢!

【问题讨论】:

  • Flash Player 的下一个版本,11.2,目前处于候选发布状态,将允许您隐藏右键菜单,但在旧版本中这是不可能的。
  • 为什么?如果@TheKaneda 的回答对您不利,更多关于他们可能会提供更多建议。

标签: javascript flash menu


【解决方案1】:

如果没有 fla(并且更改它们甚至不会给您想要的东西),您需要做一些事情来掩盖 HTML 中的 swf 文件 - 例如,<div>

但是,这也会阻止任何左键单击,如果您不希望这样做,这是我知道的唯一方法(我很确定它唯一安全的方法变体)是为了让左键点击通过添加代码。无论如何,这是一个 hack - 甚至比覆盖 swf 的 <div> 首先还要多。

为了覆盖 swf,它的窗口模式(wmode 参数)需要设置为“不透明”(如果 swf 内的区域需要透明,则为“透明”)。两者都改变​​了 FlashPlayer 的渲染模式,以便 HTML 可以显示在它上面(默认的wmode="window" 使它在其他任何东西上面渲染)。两种替代wmode 参数都在某种程度上降低了性能(“透明”比“不透明”更严重),并且都在 FlashPlayer 中引入了某些不可预测且看似无关的错误(同样,“透明”比“不透明”更严重)。例如。 YouTube 确实支持更改 wmode 参数,因此在他们的情况下,它应该没有错误 - 但其他人在让它工作时遇到了麻烦。参见例如How to make videos on Youtube not cover a lightbox?

wmode 设置为“透明”后,您可以放置​​<div> 绝对覆盖swf,这意味着它会在左键到达swf 之前捕获它们。请记住,IE6-8 不会捕获对透明元素的点击 - 因此您需要颜色 + alpha = 0 - 或透明的 png/gif - 作为元素的背景。

作为旁注,只是为了涵盖让左键单击传递到 swf 的概念(这需要在源代码/fla 中添加):您基本上让<div> 捕获 mousedown 事件,然后传递通过ExternalInterface 将坐标发送到 Flash。右键单击也可以这样做。这允许 - 并且是唯一的方法,即使它非常非常hacky - 使例如Flash 的特殊右键单击功能,而不是显示其上下文菜单。

直到 FlashPlayer 11.2,也就是说。它增加了对右键/中间点击的支持 - 以及锁定鼠标等(但在不访问源代码的情况下您仍然不太可能这样做)。

在任何情况下,除非您真的需要这个(并且这样的情况),否则最好找到替代方案 - 即使不是非常 与禁用网页上的右键菜单一样糟糕。

【讨论】:

    【解决方案2】:

    在 Flash Builder 中:

    var myContextMenu:ContextMenu = new ContextMenu();
    myContextMenu.hideBuiltInItems();
    

    【讨论】:

    • 他说他无权访问 .fla 文件。您是否要嵌入 youtube 视频或其他内容?更多细节会很棒。
    • @Tyler:是的,认为 OP 在我输入答案时编辑了问题。或者我错过了那部分。
    猜你喜欢
    • 1970-01-01
    • 2021-11-06
    • 2022-01-09
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多