2012-01-07 8 views
0

マイ拡張コンソールに次のエラーメッセージで失敗し、ユーザは、私が呼び出しにアクセス権を持っていないページで閲覧しているが場合、)(chrome.tabs.captureVisibleTabの過度の使用します:chrome.tabs.captureVisibleTab()を呼び出す権限があるかどうかを確認するにはどうすればよいですか?

tabs.captureVisibleTabのエラー:url "chrome:// settings/extensions#"のコンテンツにアクセスできません。拡張マニフェストは、このホストにアクセスするためのアクセス許可を要求する必要があります。

これが私の拡張機能の正常な流れを妨げることはありませんが、これらはchrome.tabs.captureVisibleTabを(呼び出す前に権限をチェックする方法であれば、私は専門外

らしさから、私の拡張を防ぐために)思っていました

答えて

0

try ... catchステートメントでエラーを処理しようとしましたか?このような何か:

for(var i = 0, permissions = {}; i < chrome.manifest.permissions.length; i++){ 
    // map array to object for later use 
    permissions[chrome.manifest.permissions[i]] = true; 
} 

if(permissions.hasOwnProperty('tabs')){ 
    // capture 
} 

がUPDATE:

try { 
     // If any error rises here 
     chrome.tabs.captureVisibleTab(); 
} catch(e) { 
     // Supress the error and go here 
} 
+0

残念ながら、これはうまくいきません。このエラーは例外ではないようです。 – daniel

0

拡張子だけのmanifest infoを取得し、 - chrome.permissionsdocs) 最近(Devチャンネル)クロームの開発者は、新しい強力なAPIを追加しました。あなたの内線番号が特定の許可を持っているかどうかを確認するには:

chrome.permissions.contains({ 
    permissions: ['tabs'], 
    origins: ['http://www.google.com/'] 
}, function(result) { 
    if (result) { 
    // The extension has the permissions. 
    } else { 
    // The extension doesn't have the permissions. 
    } 
}); 
+0

これは、 'tabs'パーミッションに加えて、captureVisibleTabがURLにアクセスする必要があるので、チェックでは不十分です。 –

+0

もちろん、あなたは許可のURLをつかんで手動でチェックすることができます(私は良いアイデアはありません)。 Btw。拡張機能が「chrome://」サイトにアクセスできないことをご存知でしょうか?だから、おそらくURLプロトコルをチェックすれば十分でしょうか? – hamczu

+0

私は拡張機能が "chrome://"サイトにアクセスできないと思っていましたが、プロトコルをチェックするだけで十分だと思います。私は簡単な解決策を望んでいました( "" HTTP、HTTPS、FTP、GOPHERなどのハードコーディングを開始するには...) – daniel

関連する問題