Я работаю над небольшим расширением браузера (в настоящее время предназначенным для 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++;
}