Я пытался заставить Zero Clipboard и jQuery UI Dialog хорошо играть вместе, и это оказалось довольно сложно.
Zero Clipboard позволяет копировать в буфер обмена из Javascript, поместив прозрачный ролик Flash поверх кнопки, чтобы пользователь нажимал на Flash, когда пытался нажать кнопку. Это прекрасно работает и кросс-браузерно, как вы можете видеть на демонстрационной странице .
Однако при попытке использовать это в диалоговом окне jQuery UI что-то идет не так.
Во-первых, я обнаружил, что элемент flash должен быть размещен внутри элемента диалога, в противном случае Chrome и IE отказываются отвечать на события щелчка. Это означает, что я не могу использовать удобный метод glue
, но это нормально.
Однако теперь IE по какой-то причине не примет метод setText
для элемента Flash.
Пример того, что я сделал, это здесь . Мой код начинается со строки 300, и наиболее подходящие строки:
$("#showme").dialog({autoOpen: false, width: 550, height: 200});
$("#showme").bind("dialogopen", function() {
if($("#clipflash").length == 0) {
var btn = $("#d_clip_button");
$("<div id='clipflash' style='position:absolute; background: #f00; z-index: 9999' />")
.css(btn.position())
.width(btn.width())
.height(btn.height())
.html(clip.getHTML(btn.width(), btn.height()))
.appendTo("#showme");
}
});
Я покрасил div в красный цвет, чтобы было легче определить его z-индекс и установить его на 9999, просто чтобы быть в безопасности. Затем я устанавливаю положение и размер, чтобы покрыть «кнопку», и добавляю HTML для элемента Flash с помощью clip.getHTML()
.
Я работаю над этим уже несколько часов, поэтому любая помощь будет принята с благодарностью.
Почти забыл: Моя проблема в том, что IE7 говорит "Объект не поддерживает это свойство или метод" внутри кода Zero Clipboard.
UPDATE
Комментарий Powtac указывает на то, что выглядит действительно многообещающе:
Я забыл собственное золотое правило: В
заказ для Flash ExternalInterface
чтобы работать в IE 7, вы должны набить
Врезать / объект HTML в элемент DIV
ПОСЛЕ оно добавляется в DOM. Глупый IE.
Однако переключение линий .html(clip.getHTML(btn.width(), btn.height()))
и .appendTo("#showme")
не помогло. Даже выполнение setTimeout
для добавления флэш-HTML позже не помогло. Я чувствую, что я действительно близко, хотя ...