0

我正在尝试制作一个 Chrome 扩展程序来获取当前页面的 URL,并使用它来创建和显示一个 QR 码,该 QR 码使用下面的 Google API 链接到它。

这是我的 popup.js

chrome.tabs.getSelected(null,function(tab) {
var tablink = tab.url;
});

document.write('https://chart.googleapis.com/chart?chs=100x100&cht=qr&chl=' + tablink);

这是我的 manifest.json

{
  "name": "Qrit",
  "version": "1.0",
  "manifest_version": 2,
  "description": "Instantly creates a QR Code that links to the current page.",
  "browser_action": {
    "default_icon": "icon.png",
     "default_popup": "popup.html"
  },
  "permissions": [
    "tabs"
  ]
}

问题是弹出窗口只是空白。我对 Javascript 和 Json 几乎一无所知。

4

2 回答 2

0

首先你写“manifest_version”:2,它不允许内联脚本。其次,你的弹出代码应该这样写

chrome.tabs.getSelected(null,function(tab) {
var tablink = tab.url;
document.write('https://chart.googleapis.com/chart?chs=100x100&cht=qr&chl=' + tablink);
});
于 2012-07-16T07:15:10.407 回答
0

正如汤姆所说,使用清单版本 2 你不能有内联脚本。此外,chrome.tabs.getSelected被斩首,您应该使用chrome.tabs.query.
这里有一些东西可以让你开始......

清单.json

{
  "name": "Qrit",
  "version": "1.0",
  "manifest_version": 2,
  "description": "Instantly creates a QR Code that links to the current page.",
  "browser_action": {
    "default_icon": "icon.png",
     "default_popup": "popup.html"
  },
  "permissions": [
    "tabs"
  ]
}

popup.html

<!DOCTYPE html>
<html>
    <head>
        <script src='popup.js'></script>
    </head>
    <body>
        <div id='message'>Getting Image....</div>
    </body>
</html>

popup.js

function onImageLoad() {
  var message = document.querySelector('#message');
  message.parentNode.removeChild(message);
}

function onImageError(e) {
  var message = document.querySelector('#message');
  message.innerText = 'Error getting image';
  e.srcElement.parentNode.removeChild(e.srcElement);
}

function onWindowLoad() {
  chrome.tabs.query({
    'active': true,
    'windowId': chrome.windows.WINDOW_ID_CURRENT
  }, function(tab) {
    var image = document.createElement('IMG');
    image.src = 'https://chart.googleapis.com/chart?chs=100x100&cht=qr&chl=' + tab[0].url;
    document.body.appendChild(image);
    image.onload = onImageLoad;
    image.onerror = onImageError;
  });
}

window.onload = onWindowLoad;
于 2012-07-16T11:43:08.950 回答