1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-ZeroClipboard_old1

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
ZeroClipboard.md 33 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 14:40 c2778ef

Добавить функцию/объект listener для события eventType:

  • «ZeroClipboard.on(«ready error», function(e) { // });»

Добавляет функцию-обработчик, которая будет вызвана при возникновении событий «ready» или «error».

Добавить функцию/объект listener сразу для нескольких событий eventType:

«ZeroClipboard.on({«ready»: function(e) { // },«error»: function(e) {//}});»

Позволяет добавить несколько функций-обработчиков для событий «ready» и «error», которые будут вызваны при их возникновении.

Добавить набор соответствий между событиями eventType и функциями/объектами listener:

«ZeroClipboard.off(«ready», listenerFn);»
«ZeroClipboard.off(«error», listenerObj);»

Удаляет функцию-обработчик listenerFn для события «ready», а также удаляет объект-обработчик listenerObj для события «error».

Удалить функцию/объект listener для нескольких событий eventType:

«ZeroClipboard.off({«ready»: readyListenerFn,«error»: errorListenerFn});»

Удаляет функции-обработчики readyListenerFn и errorListenerFn для событий «ready» и «error» соответственно.

Удалить все функции/объекты listener для одного события eventType:

«ZeroClipboard.off();»

Полностью удаляет все функции-обработчики для всех событий.

Удалить ВСЕ функции/объекты listener для ВСЕХ зарегистрированных типов событий:

«ZeroClipboard.off()»

Полностью удаляет ВСЕ функции-обработчики для ВСЕХ событий.

Излучить событие всем зарегистрированным слушателям:

«ZeroClipboard.emit(«ready»);»

Вызывает событие «ready» у всех зарегистрированных слушателей.

Получить копию зарегистрированных функций/объектов listener для данного типа события:

«var listeners = ZeroClipboard.handlers(«ready»)».

Возвращает массив с зарегистрированными функциями-обработчиками для события «ready».

Получить копию всех зарегистрированных функций/объектов listener для всех типов событий:

«var listeners = ZeroClipboard.handlers();».

Возвращает объект со всеми зарегистрированными функциями-обработчиками для всех событий.

Статические события

Событие «ready»:

Возникает, когда SWF-файл готов к действию после загрузки. Перед вызовом «ZeroClipboard.create()» необходимо установить большинство параметров конфигурации с помощью «ZeroClipboard.config()».

Пример использования:

«ZeroClipboard.on(«ready», function(e){/e = {type: «ready», message: «Flash communication is established», target: null, relatedTarget: null, currentTarget: flashSwfObjectRef, version: «11.2.202», timeStamp: Date.now()}/})».

Событие «beforecopy»:

Происходит при клике на элемент. Используется для подготовки перед событием «copy». Обработчики этого события должны работать синхронно, если они хотят завершиться до запуска события «copy».

Пример использования:

«ZeroClipboard.on(«beforecopy», function(e){/ e = { type: «beforecopy», target: currentlyActivatedElementOrNull, relatedTarget: dataClipboardElementTargetOfCurrentlyActivatedElementOrNull, currentTarget: flashSwfObjectRef, timeStamp: Date.now() }/})».

Событие «copy»:

Происходит после события «beforecopy», когда пользователь нажимает на кнопку. Если HTML-элемент имеет атрибут «data-clipboard-text» или «data-clipboard-target», то ZeroClipboard получит начальный набор данных. Затем будут вызваны обработчики события «copy», в которых можно вызвать метод event.clipboardData.setData для установки текста.

Обработчики события «copy» должны работать синхронно, чтобы сохранить временно повышенные разрешения, предоставленные пользователем. ZeroClipboard.on("error", function(e))


{ type: "error", name: "flash-sandboxed", messsage: "Попытка запустить Flash в изолированном iframe, что невозможно", target: null, relatedTarget: null, currentTarget: flashSwfObjectRef, timeStamp: Date.now(), minimumVersion: "11.0.0", version: "11.2.202" }

Этот тип события error срабатывает, когда установленная в браузере версия Flash Player не может двунаправленно взаимодействовать с JavaScript.


ZeroClipboard.on("error", function(e)) { /* e = { type: "error", name: "flash-unavailable", messsage: "Flash не может двунаправлено взаимодействовать с JavaScript", target: null, relatedTarget: null, currentTarget: flashSwfObjectRef, timeStamp: Date.now(), minimumVersion: "11.0.0", version: "11.2.202" }; }**


ZeroClipboard.on("error", function(e)) { /* e = { type: "error", name: "flash-degraded", message: "Flash не может сохранить точность данных при взаимодействии с JavaScript", target: null, relatedTarget: null, currentTarget: flashSwfObjectRef, timeStamp: Date.now(), minimumVersion: "11.0.0", version: "11.2.202" };**

Этот тип события error срабатывает, когда установленная в браузере версия Flash Player не может взаимодействовать с JavaScript без потери точности данных.


ZeroClipboard.on("error", function(e)) { /* e = { type: "error", name: "flash-deactivated", message: "Версия Flash слишком старая для браузера или объекты Flash настроены как «клик для активации», и пользователь не авторизует их в течение globalConfig.flashLoadTimeout миллисекунд или не авторизует вообще.**

Этот тип события error может также срабатывать в некоторых браузерах, если объект ZeroClipboard SWF не удаётся загрузить вообще. Подробнее см. error\[name = "swf-not-found"\] для получения дополнительной информации.


ZeroClipboard.on("error", function(e)) { /* e = { type: "error", name: "flash-overdue", message: «SWF успешно загружается, но на это уходит больше времени, чем globalConfig.flashLoadTimeout миллисекунд. Это может быть вызвано одной из следующих ситуаций:**

  1. Слишком короткая длительность globalConfig.flashLoadTimeout, заданная в конфигурации.**
  2. Задержка в сети.**
  3. Версия Flash пользователя настроена как «клик для активации», но затем авторизуется пользователем слишком поздно, так что SWF не успевает загрузиться до истечения периода ожидания (или он мог истечь ещё до того, как пользователь авторизовал его).

Соответствующая реакция на это событие остаётся на усмотрение потребителя. Например, если они решили вызвать ZeroClipboard.destroy() в ответ на более раннее событие error[name = «flash-deactivated»], а затем получают это событие error[name = «flash-overdue»], они могут выбрать «перезапуск» своего процесса и создание новых экземпляров клиента ZeroClipboard, или они могут просто зарегистрировать ошибку на своём сервере, чтобы рассмотреть возможность увеличения разрешённого времени ожидания в будущем.

Это может быть особенно важно для приложений на основе SPA или PJAX, поскольку их пользователи могут оставаться на одной странице в течение длительного периода времени, в течение которого они, возможно, могли бы получить улучшенный опыт, если бы ZeroClipboard был «перезапущен» после первоначального сбоя. Ошибка «flash-overdue»

Тип: «error», name: «flash-overdue», message: «Flash communication was established, но НЕ в пределах допустимого времени».

Целевой объект: null.

Связанный целевой объект: null.

Текущий целевой объект: flashSwfObjectRef.

Отметка времени: Date.now().

Минимальная версия: «11.0.0».

Версия: «11.2.202».


«error[name = "version-mismatch"]»

Добавлен в v2.2.0.

Этот тип события ошибки срабатывает, когда значение свойства ZeroClipboard.version на стороне JavaScript не совпадает со значением свойства ZeroClipboard.VERSION, которое было скомпилировано в SWF. Хотя это строже, чем обычно необходимо, это помогает избежать странных проблем, если вы случайно забудете скопировать все ресурсы при обновлении установки ZeroClipboard или столкнётесь с какими-либо странными проблемами кэширования впоследствии. В таких ситуациях это событие ошибки должно сэкономить вам много времени и избавить от путаницы при случайном изменении двунаправленного API, которое не будет работать, если оба ресурса (JS и SWF) не будут обновлены соответствующим образом.

e = {type: «error», name: «version-mismatch», messsage: «Значение номера версии ZeroClipboard JS не соответствует значению номера версии ZeroClipboard SWF», target: null, relatedTarget: null, currentTarget: flashSwfObjectRef, timeStamp: Date.now(), jsVersion: «2.2.1», swfVersion: «2.2.0».


«error[name = "clipboard-error"]»

Добавлен в v2.2.0.

Этот тип события ошибки возникает, когда возникает какая-либо ошибка при попытке Flash-слоя внедрить ожидающие данные буфера обмена в буфер обмена. Это событие срабатывает только в том случае, если внедрение хотя бы одного формата данных в буфер обмена вызвало ошибку, но не обязательно означает, что внедрение не удалось для каждого формата данных.

Если оно вообще срабатывает, то происходит после события aftercopy и перед всплывающим событием click.

e = {type: «error», name: «clipboard-error», messsage: «По крайней мере одна ошибка возникла при попытке ZeroClipboard внедрить ваши данные в буфер обмена», target: currentlyActivatedElementOrNull, relatedTarget: dataClipboardElementTargetOfCurrentlyActivatedElementOrNull, currentTarget: flashSwfObjectRef, timeStamp: Date.now(), data: {«text/plain»: «Blah», «text/html»: «Blah», «application/rtf»: «{\rtf1\ansi\n{\b Blah}}»}, errors: [{name: «SecurityError», message: «Ошибка безопасности буфера обмена OMG», errorID: 7320, stack: null, format: «application/rtf», clipboard: «desktop»}].


«error[name = "config-mismatch"]»

Добавлен в v2.2.0.

Этот тип события ошибки возникает, когда определённые свойства в настроенных значениях ZeroClipboard.config не соответствуют реальным значениям во Flash. Например, если указанное свойство config swfObjectId не соответствует неявно известному идентификатору элемента SWF-объекта SWF. Это должно происходить крайне редко, если только целостность URL swfPath не нарушается попытками межсайтовых сценариев (XSS).

e = {type: «error», name: «config-mismatch», messsage: «Конфигурация ZeroClipboard не соответствует реальности Flash», target: null, relatedTarget: null, currentTarget: flashSwfObjectRef, timeStamp: Date.now(), property: «swfObjectId», configuredValue: «my-zeroclipboard-object», actualValue: «global-zeroclipboard-flash-bridge»}.


«error[name = "swf-not-found"]»

Добавлен в v2.2.0.

Этот тип события ошибки возникает, когда объект ZeroClipboard SWF не может быть загружен, что обычно означает одно из следующего:

  1. Ваша конфигурация swfPath неверна.
  2. Сервер/домен, на котором размещается ваш SWF, не работает.
  3. Ваше сетевое подключение было потеряно.

К сожалению, это событие может поддерживаться только ограниченным подмножеством браузеров на данный момент: Firefox и IE10 (конкретно). ## Экземпляр

Доступ к следующим свойствам и методам можно получить через экземпляр клиента ZeroClipboard, например:

var clippedEl = document.getElementById("d_clip_button");
var client = new ZeroClipboard(clippedEl);

Свойства экземпляра

client.id

[String] Уникальный идентификатор для этого экземпляра клиента ZeroClipboard.

Методы экземпляра

client.destroy()

[undefined] Удалить все обработчики событий и открепить все закреплённые элементы.

client.setText(...)

client.setText("Blah");

[this] Установить ожидающие данные типа "text/plain" для вставки в буфер обмена.

client.setHtml(...)

client.setHtml("<b>Blah</b>");

[this] Установить ожидающие данные типа "text/html" для вставки в буфер обмена.

client.setRichText(...)

client.setRichText("{\\rtf1\\ansi\n{\\b Blah}}");

[this] Установить ожидающие данные типа "application/rtf" для вставки в буфер обмена.

client.setData(...)

client.setData("text/plain", "Blah");

[this] Установить ожидающие данные указанного типа для вставки в буфер обмена.

client.setData({
  "text/plain": "Blah",
  "text/html": "<b>Blah</b>"
});

[this] Установить ожидающие данные различных типов для вставки в буфер обмена. Эта конкретная сигнатура функции (передача объекта) неявно очистит все существующие ожидающие данные.

client.clearData(...)

client.clearData("text/plain");

[this] Очистить ожидающие данные указанного типа для вставки в буфер обмена.

client.clearData();

[this] Очистить все ожидающие данные для вставки в буфер обмена.

client.getData(...)

Добавлено в v2.1.0.

var text = client.getData("text/plain");

[String] Получить ожидающие данные указанного типа для вставки в буфер обмена.

var dataObj = client.getData();

[Object] Получить копию ожидающих данных всех типов для вставки в буфер обмена.

client.clip(...)

client.clip(document.getElementById("d_clip_button"))
client.clip(document.querySelectorAll(".clip_button"));
client.clip(jQuery(".clip_button"));

[this] Зарегистрировать действия буфера обмена для нового элемента (элементов) в клиенте. Это включает автоматическое инициирование ZeroClipboard.focus на текущем элементе при наведении на него, если только свойство конфигурации autoActivate не установлено в значение false.

client.unclip(...)

client.unclip(document.getElementById("d_clip_button"))
client.unclip(document.querySelectorAll(".clip_button"));
client.unclip(jQuery(".clip_button"));
client.unclip();

[this] Отменить регистрацию действий буфера обмена ранее зарегистрированных элементов на странице. Если элементы не указаны, ВСЕ закреплённые/зарегистрированные элементы будут отменены.

client.elements()

var els = client.elements();

[Array] Получить все элементы, к которым привязан этот клиент.

client.on(...)

var listenerFn = function(e) { var client = this; /* ... */ };
client.on("ready", listenerFn);

var listenerObj = {
  handleEvent: function(e) { var listenerObj = this; /* ... */ }
};
client.on("error", listenerObj);

[this] Добавить функцию/объект listener для eventType в этом экземпляре клиента.

client.on("ready error", function(e) { /* ... */ });

[this] Добавить функцию/объект listener для нескольких eventTypes в этом экземпляре клиента.

client.on({
  "ready": function(e) { /* ... */ },
  "error": function(e) { /* ... */ }
});

[this] Добавить набор сопоставлений eventType с функциями/объектами listener в этом экземпляре клиента. Клиент.off («ошибка», listenerObj);

[this] — удалить функцию/объект слушателя для eventType в данном экземпляре клиента.

client.off("ready error", listenerFn);

[this] — удалить функцию/объект слушателя для нескольких eventType в данном экземпляре клиента.

client.off({ "ready": readyListenerFn, "error": errorListenerFn });

[this] — удалить набор сопоставлений от eventType к функции/объекту слушателя в данном экземпляре клиента.

client.off("ready");

[this] — удалить все функции/объекты слушателей для eventType в данном экземпляре клиента.

client.off();

[this] — удалить все функции/объекты слушателей для всех зарегистрированных типов событий в данном экземпляре клиента.

client.emit(...)

client.emit("ready");
client.emit({
  type: "error",
  name: "flash-disabled"
});

[undefined] — отправить событие всем зарегистрированным слушателям в данном экземпляре клиента.

client.handlers(...)

var listeners = client.handlers("ready");

[Array] — получает копию зарегистрированных функций/объектов слушателей для данного eventType в этом экземпляре клиента.

var listeners = client.handlers();

[Object] — получает копию карты зарегистрированных функций/объектов слушателей для ВСЕХ типов событий в этом экземпляре клиента.

События экземпляра

См. список «Статические события». Экземпляры клиента ZeroClipboard воспроизводят ВСЕ события ZeroClipboard.Core, но ТОЛЬКО если событие не является неуместным для этого конкретного клиента. Единственное отличие состоит в том, что отправка событий клиентами будет обновлять объект события, чтобы включить свойство клиента, которое ссылается на соответствующий экземпляр клиента, например:

var client = new ZeroClipboard();
client.on("ready", function(e) {
  if (e.client === client && client === this) {
    console.log("Этот экземпляр клиента готов!");
  }
});

Параметры конфигурации

Это значения по умолчанию для параметров конфигурации глобального уровня. Как правило, вы должны обновить их ПЕРЕД созданием клиентов.

var _globalConfig = {

  // SWF URL, относительно страницы. Значением по умолчанию будет "ZeroClipboard.swf"
  // в том же пути, что и файл JS ZeroClipboard.
  swfPath: _swfPath,

  // Политика сценариев SWF: домены страниц, которым SWF должен доверять.
  // (одна строка или массив строк)
  trustedDomains: window.location.host ? [window.location.host] : [],

  // Включает параметр запроса "noCache" в запросах для SWF.
  cacheBust: true,

  // Включить использование причудливого «настольного» буфера обмена, даже в Linux, где он, как известно, работает плохо.
  forceEnhancedClipboard: false,

  // Сколько миллисекунд ждать загрузки SWF и ответа, прежде чем предположить, что
  // Flash деактивирован (например, активация по клику) в браузере пользователя. Если вам всё равно,
  // сколько времени требуется для загрузки SWF, вы можете установить значение `null`.
  flashLoadTimeout: 30000,

  // Установка значения `false` позволит пользователям обрабатывать вызов `ZeroClipboard.focus(...);`
  // самостоятельно вместо того, чтобы полагаться на наш обработчик `mouseover` для каждого элемента.
  autoActivate: true,

  // Пузырь синтетических событий в JavaScript после их получения объектом Flash.
  bubbleEvents: true,

  // Обеспечение соответствия ОС окончаниям строк, т. е. "\r\n" в Windows, "\n" в других местах
  fixLineEndings: true,

  // Устанавливает идентификатор `div`, инкапсулирующего объект Flash.
  // Значение проверяется на соответствие спецификации HTML4 для токенов ID.
  containerId: "global-zeroclipboard-html-bridge",

  // Устанавливает класс `div`, инкапсулирующего объект Flash.
  containerClass: "global-zeroclipboard-container",

  // Устанавливает идентификатор и имя элемента `object` Flash.
  // Значение проверяется на соответствие спецификации HTML4 для токенов `ID` и `Name`.
  swfObjectId: "global-zeroclipboard-flash-bridge",

  // Класс, используемый для указания того, что зачёркнутый элемент находится над ним.
  hoverClass: "zeroclipboard-is-hover",

  // Класс, используемый для обозначения того, что зачёркнутым элементом активно пользуются (его щёлкают). **Активный класс: «zeroclipboard-is-active»**

// Принудительно устанавливаем курсор в виде руки («указатель») для всех обрезанных элементов.
// ВАЖНО: Это значение конфигурации МОЖНО изменить, пока SWF активно внедрен.
forceHandCursor: false,

// Устанавливает заголовок div, инкапсулирующего объект Flash.
// ВАЖНО: Это значение конфигурации МОЖНО изменить, пока SWF активно внедрён.
title: null,

// z-индекс, используемый объектом Flash.
// Максимальное значение (32-битное): 2147483647.
// ВАЖНО: Это значение конфигурации МОЖНО изменить, пока SWF активно внедрён.
zIndex: 999999999

};

Вы можете переопределить значения по умолчанию, выполнив вызовы типа `ZeroClipboard.config({ swfPath: "new/path" });` перед созданием каких-либо клиентов.

### Доступ к скриптам SWF

#### Входящий доступ к скриптам SWF: опция trustedDomains

Это позволяет другим файлам SWF и HTML-страницам из разрешённых доменов получать доступ / вызывать общедоступный код ActionScript, например функции, совместно используемые через `ExternalInterface.addCallback`. Другими словами, он контролирует входящий доступ к сценариям SWF.

Если ваш SWF-файл ZeroClipboard обслуживается из другого источника / домена, отличного от вашей страницы, вам необходимо сообщить SWF, что можно доверять вашей странице. Значение по умолчанию `[window.location.host]` почти всегда является тем, что вы захотите, если только вы специально не хотите, чтобы SWF взаимодействовал со страницами из других доменов (например, в `iframe` или дочерних окнах).

Для получения дополнительной информации о доверенных доменах обратитесь к официальной документации Flash для `flash.system.Security.allowDomain(...)`.

#### Исходящий доступ к скриптам SWF

Параметр `allowScriptAccess` (для разметки встраивания Flash) позволяет файлу SWF получать доступ / вызывать функции JavaScript / HTML HTML-страниц на разрешённых доменах, например вызывая функции через `ExternalInterface.call`. Другими словами, это контролирует исходящий доступ к сценариям SWF.

Начиная с версии v2.0.0, параметр конфигурации `allowScriptAccess` больше не существует. Подходящее значение будет определено непосредственно перед внедрением объекта Flash на страницу. Значение основано на взаимосвязи между текущим доменом (`window.location.host`) и значением параметра конфигурации `trustedDomains`.

Для получения дополнительной информации об `allowScriptAccess` обратитесь к официальной документации Flash.

## Ограничения безопасности

### Ограничения `sandbox`ed `iframe`

Атрибут `sandbox` элемента `iframe` (новый в HTML5, поддерживается в IE10+ и всех других современных браузерах) предоставляет веб-разработчикам способ указать браузеру загрузить содержимое определённого фрейма в среде с низкими привилегиями, начиная с наименьших возможных привилегий и затем добавляя необходимые возможности. Однако атрибут `sandbox` лишает фреймовое содержимое некоторых привилегий, которые **НЕЛЬЗЯ** вернуть обратно, включая возможность запуска собственных плагинов (например, Flash), что делает ZeroClipboard полностью непригодным для использования. См. ../instructions.md#sandboxed-iframe-limitations для подробного объяснения этого ограничения и обходных путей.

### Межпротокольные ограничения

ZeroClipboard был намеренно настроен так, чтобы не позволять SWF обслуживаться из безопасного домена (HTTPS), но использовать сценарии из небезопасного домена (HTTP). Если вы оказались в такой ситуации (как в Issue #170), см. ../instructions.md#cross-protocol-limitations для подробного объяснения этого ограничения и дальнейших действий.

### Ограничения протокола `file://`

Если вы хотите либо использовать ZeroClipboard на странице, размещённой через протокол `file://`, либо обслуживать ресурсы ZeroClipboard через протокол `file://`, вы почти наверняка столкнётесь с некоторыми препятствиями из-за ограничений безопасности Flash Player. Подробные сведения об этом ограничении и возможных способах его обойти см. в разделе «Ограничения файлового протокола» документа ../instructions.md.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mirrors-ZeroClipboard_old1.git
git@api.gitlife.ru:oschina-mirror/mirrors-ZeroClipboard_old1.git
oschina-mirror
mirrors-ZeroClipboard_old1
mirrors-ZeroClipboard_old1
master