私はZeroClipboardとjQueryUIDialogを一緒にうまく機能させることを試みてきましたが、それはかなり難しいことが証明されています。
ゼロクリップボードを使用すると、ボタンの上に透明なFlashムービーを配置することで、Javascriptからクリップボードにコピーできるため、ユーザーがボタンをクリックしようとしたときにFlashをクリックします。デモページでわかるように、これはうまく機能し、クロスブラウザです。
ただし、これをjQuery UIダイアログボックスで使用しようとすると、問題が発生するようです。
最初に、flash要素をdialog要素内に配置する必要があることを発見しました。そうしないと、ChromeとIEはクリックイベントへの応答を拒否します。これは、glue
便利な方法を使用できないことを意味しますが、それは問題ありません。
setText
ただし、IEは何らかの理由で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-indexを見つけて9999に設定しやすくしました。次に、「ボタン」を覆う位置とサイズを設定し、Flash要素のHTMLを。で追加しますclip.getHTML()
。
私はこれに数時間取り組んできましたので、どんな助けでも大歓迎です。
ほとんど忘れてしまいました。私の問題は、IE7がゼロクリップボードコード内で「オブジェクトはこのプロパティまたはメソッドをサポートしていません」と言っていることです。
アップデート
powtacのコメントは、本当に有望に見えるものを示しています。
独自の黄金律を忘れました。FlashExternalInterfaceをIE7で機能 させるには、DOMに追加された後にEMBED / OBJECTHTMLをDIV要素に詰め込む必要があります。愚かなIE。
しかし、回線.html(clip.getHTML(btn.width(), btn.height()))
を切り替えて.appendTo("#showme")
も役に立ちませんでした。後でフラッシュHTMLを追加するためにを実行しても、setTimeout
役に立ちませんでした。でも、本当に近くにいるような気がします...