拡張機能のアイコンがクリックされたときにアクティブ タブのソース コードを取得する必要があります。新しいタブで表示する必要があります (ポップアップが 800px に制限されているなどの理由により)。
ポップアップを使用していたときは問題ありませんでしたが、新しいタブにデータを取得したいと考えています。
何が起きているかというと、 onClickedコールバックで使用されるtargetTab変数に正しいタブ情報が含まれています。ただし、新しいタブ (popup.html) が開かれると、何も起こりません。document.body.innerHTMLは変更されません。
何か案は?
マニフェスト.json
{
"name": "Stock Alert",
"description": "Create an alert and display streaming stock quotes.",
"version": "1.1",
"permissions": [
"https://www.gwm.ml.wallst.com/",
"https://*/*",
"http://*/*",
"tabs",
"activeTab"
],
"background": {
"scripts": ["background.js"],
"persistent": false
},
"browser_action": {
"default_icon": "logo.png"
},
"manifest_version": 2
}
background.js
chrome.browserAction.onClicked.addListener(function(targetTab) {
chrome.tabs.create({'url': chrome.extension.getURL('popup.html')}, function(tab)
{
chrome.tabs.executeScript(
targetTab.id,
{
code: "document.getElementsByTagName('html')[0].innerHTML;"
},
function (sourceCode)
{
document.getElementById('dump').innerHTML = sourceCode;
});
});
});
popup.html (誤称。これは onClicked で作成された新しいタブの URL です)
<html>
<head>
<title>Stock Tracker</title>
<!--<script src="background.js"></script>-->
<link href="Streamer.css.package.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="out"></div>
<div id="dump"></div>
</body>
</html>