2012-01-09 18 views
4

画像をクリックして横のリンクのhrefをコピーしたいと思うところに、簡単なクロム拡張機能があります。私はすべてのものを整えていますが、私の人生ではそのコピーはうまくいかないでしょう。私はその後、ID「copyInp」と入力を作成してコピーするには、次の機能を使用し、[ 「clipboardRead」、 「clipboardWrite」 ]Chrome拡張:コピーテキスト

「権限」:私は私のマニフェストに次のpremissionsを持っていますクリップボードに(ここでは、可能な限り、意図的であることを試みたので、それは最もコンパクトではありません):

function copyLinkToClipboard(link) { 
$("#copyInp").val(link); 
var inp = document.getElementById("copyInp"); 
inp.focus(); 
inp.select(); 
document.execCommand('copy'); 

};

これが実行された後、私はクリップボードにCtrl + vを押しても何も新しいことはありません。何がここで間違っているかについての任意のアイデア?入力には私が望むテキストが確実にあり、マニフェストには許可があります。どんな助けも大いに評価されるでしょう...

+0

はinp.val setですか?あなたはデバッグを試みましたか? Chromeは強力なデバッグ機能を提供します。ここで背景スクリプトをデバッグする方法に関するチュートリアル(http://code.google.com/chrome/extensions/tut_debugging.html)。ほぼ同じことがコンテンツスクリプトに当てはまります。 –

+0

inp.valが設定されています。フォーカスと選択も適切に機能しました。私は、入力を見えるようにし、テキストを見て、選択されることによって確認した。問題は完全にクロムで、execCommandを許可していない。ローカルページのコンソールからさえもできなかった。 – sh4d0w

答えて

7

もう少し掘り下げた後、私は背景ページを使う必要があることを発見しました。どうやらこれはdocument.execCommandを呼び出すことができる唯一のものです。あなたが背景ページにコピーしたいテキストを渡すために

chrome.extension.onRequest.addListener(function(obj) { 
     copyLinkToClipboard(obj.link); 
}); 

をしてからのsendRequestを使用します:だから修正はコピー機能とその中に入力してbackground.htmlを作成することですので、のようにリスナーを追加

chrome.extension.sendRequest({link: linkText}); 

とマニフェスト

"background_page": "background.html", 

出来上がりに背景ページを追加することを忘れないでください。テキストはクリップボードにコピーされます。 (セキュリティが問題であれば、拡張機能のためにAPIを作成しないのはなぜですか、むしろ実験的なAPIだけをスクラップして私たちにこの愚かな回避策を強制するのはなぜですか?)しかし、まあ、これで十分でしょう当時

+0

彼らはバックグラウンドページを削除した。 ;( – mrzepa

+0

"背景"オブジェクトの下の "ページ"に移動しました。 – tubaguy50035