前提・実現したいこと
既存のシステム(ブラウザベース)内でボタンを押すとポップアップウインドウが表示される仕組み(jsのwindow.openのようです)になっており、
そのポップアップウインドウ内から特定要素をローカルファイルに保存する拡張機能を作成しようとしています。
拡張機能は作成でき、テストで取得したい要素のあるページをタブで開き拡張機能を実行すると正常に動作しました。
しかし、ポップアップウインドウ内ではツールバーが表示されないので拡張機能のボタンが押せません。
そこで今度はその拡張機能にショートカットを割り当てしました。
これもタブで開いているときは正常に動作したのですが、ポップアップウインドウ内では動作しません。
manifest.json内の記述で全てのウインドウで動作する様にできるのでしょうか?
どなたかお詳しい方いらっしゃいましたらご教授いただけませんでしょうか?
宜しくお願い致します。
json
1{ 2 "background": {"scripts": ["background.js"]}, 3 "browser_action": { 4 "default_icon": "icon-128.png", 5 "default_title": "****" 6 }, 7 "name": "Copy", 8 "description": "********", 9 "homepage_url": "http://****", 10 "icons": { 11 "16": "icon-16.png", 12 "48": "icon-48.png", 13 "128": "icon-128.png" }, 14 "permissions": [ 15 "tabs", 16 "http://*/*", 17 "https://*/*" 18 ], 19 "version": "0.1", 20 "manifest_version": 2 21}
【追記】
既存システムのイメージは、、、https://www.sejuku.net/blog/48540
こちらのページの「window.open()とは?」の項目にある画像のような表示方法で、
指定のボタンを押すとvideoタグが含まれたここで言う”サンプル.html”が表示されます。
この画像をご覧頂くと分かる通り、ポップアップで開いたウインドウにはアドオンボタンが表示されません。
その為、アドオンにショートカットを割り当てて利用しようと考えました。
しかし通常タブでは動作しますが、ポップアップでは動作しませんでした。。。
実際に動画部分を切り出すスクリプトは以下の様な内容です。
↓main.js
js
1javascript: (() => { 2 const video = document.querySelector('video'); 3 if (video) { 4 const canvas = document.createElement('canvas'); 5 canvas.width = video.clientWidth; 6 canvas.height = video.clientHeight; 7 const context = canvas.getContext('2d'); 8 context.drawImage(video, 0, 0, canvas.width, canvas.height); 9 const image = new Image(); 10 image.src = canvas.toDataURL('image/jpeg'); 11 const a = document.createElement('a'); 12 a.download = `${location.host}_${new Date().toISOString()}.jpeg`; 13 a.target = '_blank'; 14 a.href = image.src; 15 a.click(); 16 } else { 17 alert('There is no video tag.'); 18 19 } 20})(); 21void 0;
こちらはブックマークレットで公開されていたものをjsファイルとして保存し、background.jsで読み出しているものです。
↓background.js
js
1chrome.browserAction.onClicked.addListener(function(tab) { 2 chrome.tabs.executeScript(tab.id, {file: "main.js"}) 3 4});
ファイルは以上となります。
あなたの回答
tips
プレビュー