为什么 bookmarkItem.url 返回未定义而 bookmarkItem.id 工作正常?
Why is bookmarkItem.url returning as undefined while bookmarkItem.id is working fine?
我正在开发一个小型浏览器扩展(目前针对使用 WebExtensions API 的 Firefox)。第一步是让它从 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=...这不起作用。
我使用了一些 example code from 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++;
}
您希望书签项目作为您的第二个参数,但实际上是 url。
更改已创建书签的签名或将第二个参数更改为 bookmarkItem。
我正在开发一个小型浏览器扩展(目前针对使用 WebExtensions API 的 Firefox)。第一步是让它从 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=...这不起作用。
我使用了一些 example code from 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++;
}
您希望书签项目作为您的第二个参数,但实际上是 url。 更改已创建书签的签名或将第二个参数更改为 bookmarkItem。