如何正确地从Chrome扩展中的其他文件引用constants.js文件中的常量?

hc8w905p  于 2023-03-21  发布在  Go
关注(0)|答案(1)|浏览(133)

我有一个constants.js文件,其中包含如下导出语句:const domains = ['target.com', 'amazon.com', '88rising.com'];
当我从另一个文件导入时,如下所示:

const domains = ['target.com', 'amazon.com', '88rising.com'];

document.addEventListener('DOMContentLoaded', () => {
    chrome.tabs.query({active: true, currentWindow: true}, tabs => {
      
      const currentUrl = tabs[0].url;
      const truncatedUrlElement = document.getElementById('truncated-url');
      const siteIndexElement = document.getElementById('index-number');

      truncatedUrl = new URL(currentUrl).hostname.replace(/^www\./, '');
      truncatedUrlElement.textContent = truncatedUrl;
      console.log(truncatedUrl)
      
      siteIndex = domains.indexOf(truncatedUrl) + 1;
      siteIndexElement.textContent = siteIndex.toString();
    });
  });

domains实际上可以正确地记录到控制台,但不能正确地从document.addEventListener块中记录。我很坚韧理解为什么会出现这种情况,以及如何在整个Chrome扩展项目中正确地引用和导入constants.js文件中的常量。
尝试从另一个文件constants.js导入变量,并希望正确处理引用。
奇怪的是,它在文件的开头工作,而在中间却不工作。

1cosmwyk

1cosmwyk1#

好吧,经过一些工作和调试,看起来在constants.js文件中存储常量并不是一个好主意。Chrome扩展程序有一个更简单的方法来存储和检索常量,它使用了一个名为chrome.storage.sync的内置方法。
下面是一个示例,说明如何从background.js中设置一个常量,以便在其他文件中使用:

let domains_list = ['target.com', 'amazon.com', '88rising.com']

chrome.storage.sync.set({
  domains: domains_list
});

然后,我可以检索另一个文件,对我来说是index_state.js,使用简单的.get

chrome.storage.sync.get('domains', (result) => {
  domains = result.domains;
});

我在文档中发现了这个问题,因为我一直在努力使用导入和导出方法将常量从一个文件正确地传递到另一个文件。我希望将来有人能看到这个答案,保存我花在这个问题上的时间!

相关问题