为什么当bookmarkItem.id运行正常时,bookmarkItem.url返回未定义状态?

时间:2018-11-18 21:11:09

标签: javascript firefox browser firefox-webextensions

我正在开发一个小的浏览器扩展程序(当前使用WebExtensions API定位于Firefox。第一步是在添加新书签时从URL中剥离?utm_source =...。此方法有效。< / p>

dotnet --version

现在,我正在努力添加功能,以遍历所有现有书签并将其剥离?utm_source =...。这不起作用。

我使用了一些example code from MDN来遍历书签,并将值输出到控制台。这段代码可以正常工作:

function bookmarkCreated(id, bookmarkInfo) {
    console.log(`Bookmark ID: ${id}`);
    console.log(`Bookmark URL: ${bookmarkInfo.url}`);
    currentURL = bookmarkInfo.url;

    var strippedURL = currentURL.replace(/\?utm_source=.*/, "");

    var newURL = browser.bookmarks.update(id, {
        url: strippedURL
    });
}

我在logItems的上方添加了对bookmarkCreated的调用(上面的第一个片段)-认为这应该更新URL。似乎可以正常地打开bookmarkItem.id,但是将bookmarkItem.url设为未定义。

function makeIndent(indentLength) {
  return ".".repeat(indentLength);
}

function logItems(bookmarkItem, indent) {
  if (bookmarkItem.url) {
    console.log(makeIndent(indent) + bookmarkItem.url);
  } else {
    console.log(makeIndent(indent) + "Folder");
    indent++;
  }
  if (bookmarkItem.children) {
    for (child of bookmarkItem.children) {
      logItems(child, indent);
    }
  }
  indent--;
}

function logTree(bookmarkItems) {
  logItems(bookmarkItems[0], 0);
}

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

var gettingTree = browser.bookmarks.getTree();
gettingTree.then(logTree, onRejected);`

1 个答案:

答案 0 :(得分:1)

您希望将bookmarkItem作为第二个参数,但可以使用URL。 更改书签创建的签名或将第二个参数更改为书签项目。