第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么我的 Google Chrome 擴展程序無法使用 Set() 正確保存數(shù)據(jù)?

為什么我的 Google Chrome 擴展程序無法使用 Set() 正確保存數(shù)據(jù)?

SMILET 2023-09-07 16:03:08
我正在嘗試創(chuàng)建一個擴展程序,它能夠記住我訪問過的一些網(wǎng)站。當我按下擴展程序時,會出現(xiàn)一個按鈕(允許用戶保存選項卡的當前 URL 和標題)和一個“a”元素,該元素將重定向到保存的 URL。這個想法是讓它能夠保存不同的 URL,但首先我希望它能夠保存一個。有人告訴我用 Set() 來做到這一點。我有代碼,但出了點問題,所以當我按下最后保存的元素的“a”元素時,它會打開那個 Direction:chrome-extension://the_key_of_my_extension/[object%20Set%20Iterator]或: chrome-extension://the_key_of_my_extension/[undefined]。我做錯了什么?我已經(jīng)搜索了一段時間,但我沒有發(fā)現(xiàn)任何問題。謝謝!var urlSet = new Set();var titleSet = new Set();chrome.storage.sync.get(["activeTab", "nameOfTheTab"], function(items){  urlSet.add(items.activeTab);  titleSet.add(items.nameOfTheTabs);  document.getElementById('urlDude').href = [...urlSet];  document.getElementById('urlDude').innerHTML = [...titleSet];  });saveItem.onclick = function(element) {  chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {    urlSet.add(tabs[0].url);    titleSet.add(tabs[0].title);    chrome.storage.sync.set({ "activeTab": [...urlSet] }, function(){  });    chrome.storage.sync.set({ "nameOfTheTab": [...titleSet] }, function(){  });    document.getElementById('urlDude').href = [...urlSet];    document.getElementById('urlDude').innerHTML = [...titleSet]; });};<!DOCTYPE html>  <html>    <head>      <link rel="stylesheet" href="./popus.css">    </head>    <body>      <button id="saveItem">save</button>      <script src="popup.js"></script>      <br>      <br>      <a id="urlDude" target="_blank"><p>Hola</p></a>      <a id="urlDude2" target="_blank"><p>Hola2</p></a>    </body>  </html>
查看完整描述

1 回答

?
墨色風雨

TA貢獻1853條經(jīng)驗 獲得超6個贊

我在我的擴展中嘗試了您的代碼(進行了一些細微的修改)并且它有效,所以我懷疑您之前的嘗試可能導致存儲中卡住了一些東西。這是我所得到的:


var urlSet = new Map();


chrome.storage.sync.get(["activeTabs"], function(items){

if(!items.activeTabs)

 return;

urlSet = new Map(JSON.parse(items.activeTabs));

AddLinks();

});


function AddLinks()

{

  //There are better ways of doing this!

  var myLinks="";

  urlSet.forEach(function(value, key) {

    myLinks+="<a href='"+value+"' target='_blank'>"+key+"</a>";

  });


  // You may want to come up with a way to delete links 

  //before they get out of control and proclaim independence 

  document.getElementById('mydiv').innerHTML  = myLinks; 

}


saveItem.onclick = function(element) {

  chrome.tabs.query({active: true}, function(tabs) {


  urlSet.set(tabs[0].title, tabs[0].url);


  chrome.storage.sync.set({ "activeTabs":JSON.stringify(Array.from(urlSet.entries())) });

  AddLinks();

  });

};

更新似乎將內(nèi)聯(lián)腳本添加到彈出窗口會導致安全問題。雖然可以將您的頁面列入白名單以使用自己的腳本,但添加新元素的更好方法是使用 document.createElement 創(chuàng)建它們,而不是生成字符串,以便讓您了解它的外觀:


 var delButton = document.createElement("button");

delButton.innerHTML = "delete";

delButton.addEventListener('click',function(){/*something useful happens here*/});

document.getElementById('mydiv').append(delButton);


查看完整回答
反對 回復 2023-09-07
  • 1 回答
  • 0 關(guān)注
  • 119 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號