Как я могу предотвратить возможность щелчка правой кнопкой мыши на Flash Embed - PullRequest
1 голос
/ 01 марта 2012

Мне нужно отключить стандартное меню правой кнопки мыши для вставки флеш-памяти.

Я установил для меню значение false, а также использовал функцию остановки по умолчанию для события щелчка правой кнопкой мыши, но он по-прежнему отображает меню.

Кроме того, у меня нет доступа к файлам .fla, поскольку объекты флэш-памяти не были созданы мной.

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 01 марта 2012

Без флагов (и их изменение в любом случае не даст вам того, что вы хотите), вам нужно будет что-то сделать, чтобы скрыть файл swf в HTML - например, <div>.

Это, однако, также заблокировало бы любые оставленные щелчки, и если вы не хотите этого, единственный известный мне способ (и я совершенно уверен, что - это единственный способ, безопасные варианты)заключается в добавлении кода для того, чтобы левые клики проходили.В любом случае, это хак - даже больше, чем swf-cover <div> на первом месте.

Чтобы покрыть swf, его режим окна (wmode param) должен быть установлен на "непрозрачный"«(или« прозрачный », если области внутри swf должны быть прозрачными).Оба изменяют режим рендеринга FlashPlayer, так что поверх него может отображаться HTML (по умолчанию wmode="window" заставляет его рендерить поверх всего остального).Оба альтернативных параметра wmode несколько снижают производительность («прозрачнее», а не «непрозрачно»), и оба вносят некоторые непредсказуемые и, по-видимому, несвязанные ошибки в FlashPlayer (опять же, «прозрачнее» больше, чем «непрозрачно»).Например, YouTube поддерживает изменение параметра wmode, поэтому в их случае он не должен содержать ошибок - но у других возникли проблемы с его настройкой.См., Например, Как сделать, чтобы видео на Youtube не закрывали лайтбокс?

После установки wmode в «прозрачный», вы можете поместить <div> абсолютно для покрытия swf, чтоозначает, что он будет захватывать левые клики, прежде чем они достигнут SWF.Помните, что IE6-8 не будет захватывать клики на прозрачном элементе - поэтому вам понадобится цвет + alpha = 0 - или прозрачный png / gif - для фона элемента.

В качестве примечания, просто чтобы охватить концепцию пропуска левых кликов к swf (что требует добавления в исходный код / ​​fla): вы бы просто позволили <div> захватывать события mousedown и передавать координаты напрошить через ExternalInterface.Можно сделать то же самое для правых кликов.Это позволяет - и это единственный способ, даже если он очень, очень хакерский - создавать, например, специальные функциональные возможности щелчка правой кнопкой мыши для Flash, а не показывать его контекстное меню.

До FlashPlayer 11.2, то есть.Он добавляет поддержку правого / среднего щелчка, а также блокировку мыши и т. Д. (Но все равно маловероятно, что вы могли бы сделать это без доступа к источнику).

В любом случае, если вы действительно не нужно это (и есть таких случаев ), лучше найти альтернативы - даже если нет довольно такая же плохая идея, как отключение меню правой кнопки мыши на веб-страницев общем.

0 голосов
/ 01 марта 2012

В Flash Builder:

var myContextMenu:ContextMenu = new ContextMenu();
myContextMenu.hideBuiltInItems();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...