Я делаю расширение для Chrome и использую в нем API chrome.storage. Я не размещаю здесь полный код (более 200 строк), но достаточно, чтобы, вероятно, показать, что я пытаюсь сделать.
Content Script (скрипт, добавленный в веб-страницу из-за моего расширения) :
....
var videos = []
var imgs = []
var img = this.getElementsByTagName('img')
var video = this.getElementsByTagName('video')
for (i = 0; i <img.length; i++){
if (img[i].className == "FFVAD"){
imgs.push(img[i].src)
addselection(img[i].parentNode.parentNode)
}
}
for (i = 0; i <video.length; i++){
if (video[i].className == "tWeCl"){
videos.push(video[i].src)
addselectionV(video[i].parentNode.parentNode)
}
}
function addselectionV(e){
e.style.border = "2px solid red"
console.log(videos)
for (var i = 0; i < videos.length; i++){
chrome.storage.sync.set({['video'+i]: videos[i]}, function() {
console.log('Value is set to ' + videos[i] + ' and key is set to ' + ['video'+i]);
})
chrome.storage.sync.set({vcount: videos.length}, function() {
document.querySelector('.selectionbar').innerHTML = "Item(s) selected: "+videos.length
});
}
Я заметил, что это не работает, поэтому я добавил console.log(videos)
, чтобы напечатать элемент в массиве. Это было там, так что я сделал console.log(videos[0])
, и это тоже было там. Я заглянул в консоль разработчика и заметил, что во время моего цикла for
, videos.length
возвращает неопределенное значение. Что странно, потому что я, кажется, все правильно настроил. ( изображение консоли здесь )