2016-03-29 16 views
1

私はChrome拡張機能に、拡張ディレクトリからinstall.batというファイルをダウンロードするバックグラウンドスクリプトを用意しています。それは完全に機能します。私が電話をかけたいときしかしchrome.downloads.open(id);次のエラーがスローされます:私は、この手順に必要なmanifest.jsonファイル内の両方の権限(["downloads", "downloads.open"])を要求したchrome.downloads.downloadの後にファイルを実行

Unchecked runtime.lastError while running downloads.open: User gesture required 

この問題の回避策はありますか、それとも単純な解決策ですか?

+0

HTTPを見てみましょう:// stackoverflowのを.com/questions/26775564/how-to-open-a-downloaded-file。答えに関するコメントは、あなたが持っている問題を説明するように見えます。 – dan

+0

@ dan75私はこの質問とコメントを見てきましたが、解決策を提示していません。 [コメント](http://stackoverflow.com/questions/26775564/how-to-open-a-downloaded-file#comment42138751_26778655)では、「カスタムボタンを提示する」ことができます。しかしどうですか? JavaScriptのconfirm()ダイアログと 'chrome.downloads.acceptDanger'は動作しないためです。 – Datagrammar

+0

これは[ここ](https://bugs.chromium.org/p/chromium/issues/detail?id=181124)に記載されているような既知の問題だと思います。 * "ユーザーのジェスチャー処理を通知apiに追加する。これにより、ユーザーが通知とやりとりした後にユーザーのジェスチャーが考慮されなかったバグが修正されます。" * – abielita

答えて

1

私は彼のコメントに記載されている@abielitaというディスカッションを読んだ後、私の問題の解決策を見つけました。通知は今度はUser gestureとカウントされます。 マニフェストで許可downloads.openが要求されたときにダウンロードを自動的に開くことができないと、この許可は役に立たなくなります。だからここ

は私のソリューションです(ダウンロードが自動的に開かないので、ウィッヒで、私は、と本当に満足していない)が、それは私の仕事:

var downloadID = 123; 

var nIcon = chrome.extension.getURL("icons/icon_48.png"); 
var nTitle = "My Extension - Client Installer"; 
var nMessage = "Please click the button below to run the installer."; 
var nButtons = [{ title: "Run the installer..." }]; 

var nOptions = { type: "basic", iconUrl: nIcon, priority: 2, title: nTitle, message: nMessage, buttons: nButtons }; 
chrome.notifications.create("hello_world", nOptions, function (nIDa) { 
    chrome.notifications.onButtonClicked.addListener(function (nIDb, nButtonIndex) { 
     if (nIDb === nIDa) { 
      chrome.downloads.open(downloadID); 
     } 
    }); 
}); 
関連する問題