私はzeroclipboardを使用して、ユーザースクリプト内のかなり大きなリストの各行に「コピー」リンクを追加しています。これを実現するために、このページにリストされているものと同様のメソッドを使用します。このメソッドでは、ユーザーが行にマウスを合わせると、各行のZeroClipboard.Client()要素が作成されます。これはFireFoxではうまく機能しますが、Chromeでは機能しません。
また、メモとして、ZeroClipboard.jsファイルの内容を、外部ファイルに含めるのではなく、ユーザースクリプト自体にコピーしました。
各要素のコピーボタンを作成するマークアップは次のとおりです
<span style="color:blue; text-decoration:underline; cursor:pointer" id="copy_'+id+'" class="CopyLink" link="'+url+'" onmouseover="clipboard.add(this)">Copy</span>
クリップボードのクライアントオブジェクトを追加するコードセグメントは次のとおりです。
function main(){
window.clipboard = {
load: function (){
if(!clipboard.initialized){
ZeroClipboard.setMoviePath("http://www.swfcabin.com/swf-files/1343927328.swf");
clipboard.initialized=true;
console.log("Clipboard intialized");
}
},
add: function(element){
clipboard.load();
var clip = new ZeroClipboard.Client();
console.log('Clipboard client loaded: ' + element.id);
clip.glue(element, element.parentNode);
console.log('Clipboard glued: ' + element.id);
clip.setText(element.getAttribute('link'));
console.log('Clipboard text set: ' + element.getAttribute('link'));
clip.addEventListener('complete',function(client,text) {
console.log('Clipboard copied: ' + text);//doesn't fire in chrome
});
clip.addEventListener('load',function(client) {
console.log('Clipboard loaded: ' + element.getAttribute('link'));
});
}
}
//other code in user script including injecting above markup
//as well as contents of ZeroClipboard.js
window.ZeroClipboard = { ... }
}
var script = document.createElement("script");
script.appendChild(document.createTextNode('('+main+')()'));
(document.head || document.body || document.documentElement).appendChild(script);
このブロックでは、マウスオーバーしてコピースパンをクリックすると、FireFoxですべてのconsole.logが起動しますが、Chromeでは、「完全な」リスナーを除いてすべて起動します。このページの例を使用して、ZeroClipboardがChromeで機能していることを確認できました。また、フラッシュオブジェクトがページの正しい場所に追加されていることを確認できますが、クリックに応答していません。
ゼロクリップボードコードはサイトによるともはや維持されていないので、私はそこにいる誰かが私を助けてくれることを望んでいます。マウスオーバー時にChromeに埋め込まれたフラッシュオブジェクトを動的に追加することに問題があるのではないか、またはChromeのユーザースクリプトとGreasemonkeyを使用したFirefoxの違いがあると思いますか?どんな助けでも大歓迎です、ありがとう