簡體   English   中英

我正在嘗試使用 chrome.storage.sync 和 chrome.tabs.create 傳輸用戶輸入的數據並將其用作 chrome.tabs api 的 url

[英]I am trying to use chrome.storage.sync and chrome.tabs.create to transfer data that user inputed and use it as the url for chrome.tabs api

我正在嘗試使用 chrome.storage.sync 和 chrome.tabs.create 來制作它,以便用戶將某些網站放在選項菜單中,並在單擊按鈕時打開這些網站。

我遇到了麻煩,因為我不確定如何從 chrome.storage.syng.get 獲取輸入並將其提供給 chrome.tabs.create,因為 chrome.tabs.create 要求 url 的字符串。 對於這個問題的措辭多么糟糕,我深表歉意,但希望您可以通過我的代碼理解。

背景腳本:

chrome.storage.sync.get('website1', function(website1){
  chrome.tabs.create ({url: 'website1'})
});
chrome.storage.sync.get('website2', function(website2){
  chrome.tabs.create ({url: 'website2'})
});
chrome.storage.sync.get('website3', function(website3){
  chrome.tabs.create ({url: 'website3'})
});

在我在這里的這段代碼中,它只是打開一個選項卡,試圖訪問一個名為“website 3”的網站,因為它認為那是 url,但它應該代表用戶輸入的內容。我該如何輸入代碼,以便它將用戶輸入的內容作為 url 插入。

抱歉,這措辭令人困惑,我很難描述我的問題。

回調收到一個object ,它的每個鍵對應於您請求的鍵。 順便說一句,您可以在一個電話中請求多個密鑰:

chrome.storage.sync.get(['website1', 'website2', 'website3'], data => {
  if (data.website1) chrome.tabs.create({url: data.website1});
  if (data.website2) chrome.tabs.create({url: data.website2});
  if (data.website3) chrome.tabs.create({url: data.website3});
});

您可以使用循環:

chrome.storage.sync.get(['website1', 'website2', 'website3'], data => {
  for (const url of Object.values(data)) {
    chrome.tabs.create({url});
  }
});

同樣,您可以在一次調用中存儲多個密鑰:

chrome.storage.sync.set({
  website1: 'url1',
  website2: 'url2',
  website3: 'url3',
});

您可以在一個鍵下存儲一組 URL:

chrome.storage.sync.set({
  websites: ['url1', 'url2', 'url3'],
});

...並閱讀它:

chrome.storage.sync.get('websites', data => {
  for (const url of data.websites || []) {
    chrome.tabs.create({url});
  }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM