Почему bookmarkItem.url возвращается как неопределенное, а bookmarkItem.id работает нормально? - PullRequest
0 голосов
/ 19 ноября 2018

Я работаю над небольшим расширением браузера (в настоящее время предназначенным для Firefox с использованием API WebExtensions. Первым шагом было его удаление? Utm_source = ... из URL при каждом добавлении новой закладки. Это работает.

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
    });
}

Сейчас я работаю над добавлением функциональности, чтобы перебрать все существующие закладки и убрать их из? Utm_source = ... Это не работает.

Я использовал пример кода из MDN , который перебирает закладки и выводит значения на консоль. Этот код отлично работает:

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);`

Я добавил в logItems выше вызов bookmarkCreated (первый фрагмент выше), полагая, что это должно обновить URL. Кажется, он отлично тянет bookmarkItem.id, но получает bookmarkItem.url как неопределенный.

if (bookmarkItem.url) {
  console.log(makeIndent(indent) + bookmarkItem.url);
  bookmarkCreated(bookmarkItem.id, bookmarkItem.url);
} else {
  console.log(makeIndent(indent) + "Folder");
  indent++;
}

1 Ответ

0 голосов
/ 19 ноября 2018

Вы ожидаете, что закладка будет вашим вторым параметром, но вместо этого есть URL. Либо измените подпись bookmarkCreated, либо измените второй параметр на bookmarkItem.

...