尝试在Chrome中创建书签时,控制台中出现错误“浏览器未定义”

时间:2018-07-23 06:49:45

标签: javascript bookmarks

我正在尝试创建书签(在这种情况下为chrome)

API/bookmarks/create

我的代码是:

	function onCreated(node) {
  console.log(node);
}

var createBookmark = browser.bookmarks.create({
  title: "bookmarks.create() on MDN",
  url: "https://developer.mozilla.org/Add-ons/WebExtensions/API/bookmarks/create"
});

createBookmark.then(onCreated);
<!DOCTYPE html>
<html>
<head>
	<title>test</title>
</head>
<body>

<p>text example</p>
</body>
</html>

在chrome中运行代码时出现此错误:

Uncaught ReferenceError: browser is not defined

我运行其他代码:

function onFulfilled(bookmarkItems) {
  if (bookmarkItems.length) {
    console.log("active tab is bookmarked");
  } else {
    console.log("active tab is not bookmarked");
  }
}

function onRejected(error) {
  console.log(`An error: ${error}`);
}

function checkActiveTab(tab) {
  var searching = browser.bookmarks.search({url: tab.url});
  searching.then(onFulfilled, onRejected);
}

browser.browserAction.onClicked.addListener(checkActiveTab);

来自:here,我遇到了同样的错误。

更新问题:

此时

我的manifest.json:

 {
    "name": "add site random",
    "version": "1.0",
    "description": "this is my first extension in production",
    "manifest_version": 2
  }

有什么主意,因为我遇到此错误,我正在尝试创建一个文件夹,并根据代码在书签中添加一个网站?

2 个答案:

答案 0 :(得分:0)

通过最近的修改并查看您的manifest.json,您似乎缺少了几个permissions字段,

因此像这样更新您的manifest.json,(然后重新打包一个新的扩展名)

{
    "name": "add site random",
    "version": "1.0",
    "description": "this is my first extension in production",
    "manifest_version": 2,
    "background": {
      "scripts": ["YOUR_BACKGROUND_SCRIPT_NAME.js"]
    }, 
    "permissions": [
        "notifications",
        "activeTab"
    ]
}

希望这会有所帮助!

答案 1 :(得分:0)

除了manifest文件中缺少脚本调用之外,在检查了注释的要点链接后,该脚本调用似乎已经解决(很好的捕获方法@DavidR!),但是,问题代码的两个版本仍然在manifest的{​​{1}}块中缺少对html文件的引用,例如。 Mozilla建议的类似<head>之类的内容可能只允许您跳过当前的问题。

为完整性起见,以下是我对您对该<link rel="manifest" href="/manifest.webmanifest">文件所做的操作...

index.html

...,我还将建议将<!DOCTYPE html> <html> <head> <link rel="manifest" href="/manifest.webmanifest"> <title>test</title> </head> <body> </body> </html> 文件重命名为具有manifest扩展名,因为与规范相关的reasons