【发布时间】:2009-10-08 12:14:16
【问题描述】:
我一直试图让Zero Clipboard 和jQuery UI Dialog 一起玩得很好,但事实证明这相当困难。
零剪贴板允许通过在按钮上放置一个透明的 Flash 影片从 Javascript 复制到剪贴板,以便用户在尝试单击按钮时单击 Flash。正如您在demo page 中看到的那样,这可以很好地跨浏览器运行。
但是,当尝试在 jQuery UI 对话框中使用它时,似乎出现了问题。
首先,我发现flash元素必须放在对话框元素里面,否则Chrome和IE拒绝响应点击事件。这意味着我不能使用glue 便捷方法,但没关系。
但是,现在 IE 出于某种原因不接受 Flash 元素上的setText 方法。
我所做的一个例子是here。我的代码从第 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-index 设置为 9999。然后我设置位置和大小以覆盖“按钮”,并使用clip.getHTML() 添加 Flash 元素的 HTML。
我已经为此工作了几个小时,因此我们将不胜感激。
差点忘了:我的问题是 IE7 在零剪贴板代码中显示“对象不支持此属性或方法”。
更新
powtac 的评论指出了一些看起来很有希望的事情:
我忘记了自己的黄金法则:在 订购 Flash ExternalInterface 要在 IE 7 中工作,你必须填充 将 HTML 嵌入/对象 HTML 到 DIV 元素中 AFTER 它被附加到 DOM。愚蠢的IE。
但是,切换行 .html(clip.getHTML(btn.width(), btn.height())) 和 .appendTo("#showme") 并没有帮助。甚至为稍后添加 Flash HTML 做 setTimeout 也无济于事。不过,我觉得我真的很亲近……
【问题讨论】:
-
你为什么不把它放在答案中,这样我至少可以投票给你?
标签: javascript flash jquery-ui clipboard zeroclipboard