Я пишу расширение Chrome и испытываю трудности с тем, чтобы мои слушатели событий работали правильно.Добавление нескольких прослушивателей событий к одной ссылке
manifset.json
{
"manifest_version": 2,
"name": "Test",
"description": "testing this",
"version": "1.0",
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
},
"permissions": [
"bookmarks"
]
}
popup.html
<!doctype html>
<html>
<head>
<title>Testing</title>
<style>
body {
min-width: 357px;
overflow-x: hidden;
}
img {
margin: 5px;
border: 2px solid black;
vertical-align: middle;
width: 75px;
height: 75px;
}
</style>
<script src="popup.js"></script>
</head>
<body>
</body>
</html>
popup.js
document.addEventListener('DOMContentLoaded', function() {
chrome.bookmarks.getTree(function (stuff){
traverseBookmarks(stuff[0].children[0].children);
});
});
function traverseBookmarks(bookmarkTreeNodes) {
for(var i=0;i<bookmarkTreeNodes.length;i++) {
var bookmark = document.createElement('a');
if(bookmarkTreeNodes[i].url){
console.log("here mother");
bookmark.href = bookmarkTreeNodes[i].url;
bookmark.target = "_blank";
}
else{
bookmark.addEventListener("click", addChildren(bookmarkTreeNodes[i].children), false);
}
bookmark.innerHTML = bookmarkTreeNodes[i].title;
document.body.appendChild(bookmark);
document.body.appendChild(document.createElement("br"));
if(bookmarkTreeNodes[i].children) {
traverseBookmarks(bookmarkTreeNodes[i].children);
}
}
}
function addChildren(children) {
var windows = "";
for(var i = 0; i < children.length; i++){
window.open(children[i].url);
// windows += 'window.open(' + children[i].url + ');';
}
return windows;
}
Проблема Я бегу в каждый раз, когда я нажимаю на значок внутренней линии чтобы открыть всплывающее окно, первое соединение в прослушивателе событий запускается, и оно заканчивается только открытием первой вкладки.
Цель состоит в том, чтобы иметь возможность щелкнуть папку (теперь только ссылку, обозначающую папку), и открыть все ссылки внутри этой папки. Любая помощь приветствуется. Дайте мне знать, если мне нужно что-то разъяснить.
Я думаю, у вас была синтаксическая ошибка в вашем примере, спасибо. Это помогло. Теперь я могу открыть всплывающее окно с помощью прослушивателя событий. Имея небольшую проблему с открытием нескольких вкладок, но это еще одна проблема, с которой я могу работать. Большое спасибо! Я вставил код, в который я попал, используя который в основном похож на ваш. (функция (num) { bookmark.addEventListener ("click", function() { addChildren (bookmarkTreeNodes [num] .children, false); })}) (i); –