ZClip (http://www.steamdev.com/zclip/) を使用して、複数のリンクの Web ページで「クリップボードにコピー」機能を有効にしています。このシナリオでは、次の 2 つの問題に直面しています。
- ZClip が使用されているページには、ユーザーが以前にアップロードした画像ファイル、ビデオ ファイル、オーディオ ファイル、およびドキュメントをリストする 4 つの div があります。これらの各 div は一度に 1 つずつ表示されるため、たとえば、ユーザーがオーディオ タブをクリックしてすべてのオーディオ ファイルを表示した後、ビデオ タブをクリックすると、オーディオ ファイルを表示していた div が非表示になり、ビデオ用の 1 つが表示されます。おそらく、ZClip は Flash を使用しているため、親要素が非表示になっている HTML 要素に依存する swf を「ロード」することができません。そのため、各タブをクリックして zclip インスタンスをロードします。これが問題 1 です。タブがクリックされるたびにリロードし続ける必要がないように、一度ロードしたいと思います。
- リンクで zclip を初期化するときに、各リンクで zclip afterCopy アクションを有効にしました。この afterCopy 関数では、警告ボックスが表示され、テキストがクリップボードにコピーされたことをユーザーに通知します。タブがクリックされるたびに zclip インスタンスをロードしているため、afterCopy アクションが複数回適用され、アラート ボックスが複数回ポップアップします。動画タブに 2 回アクセスしてリンクのコピー ボタンをクリックすると、2 つの警告ボックスが表示されます。ビデオ タブに 3 回アクセスすると、3 つのアラート ボックスが表示されます。
$('a.copy').zclip('remove');
リンクで zclip を初期化する前に を使用してみました。この機能は zclip の Web サイトに表示されていますが、余分なアラート ボックスが表示されるわけではありません。リンクに関連付けられた swf のみが削除され、リンクにバインドされたイベントは削除されません。基本的に、次のいずれかを実行する方法についてのガイダンスが必要です。
- タブの選択時に zclip を適用する前に、適用された既存のアイテムから zclip を「バインド解除」します。
- または、適用されたリンクが非表示の div 内にあるという事実に関係なく、zclip が複数のリンクに一度だけ適用される何らかの方法
- またはさらに良いことに、複数の「コピー」リンクで使用する単一の zclip インスタンスのみを使用します。したがって、クリップボードに何かをコピーするためにクリックされた各リンクは、同じ zclip インスタンスを使用します。