gpt4 book ai didi

javascript - 无法使用WebExtensions中的组件: get "ReferenceError: Cu is not defined"

转载 作者:太空宇宙 更新时间:2023-11-04 15:33:29 26 4
gpt4 key购买 nike

我有一个简单的扩展,我使用 Cu.import 导入 JavaScript code module 。但是,当我加载扩展程序时,出现此错误:

Cu is not defined

我尝试使用的代码是:

Cu.import("resource://gre/modules/MatchPattern.jsm");
Cu.import("resource://gre/modules/BrowserUtils.jsm");

var regExArray = [];
var myArray = ["facebook.com", "google.com"];

var myURL="http://www.google.co.uk/?gfe_rd";

for (var x=0; x<myArray.length; x++)
{
console.log("loop: "+x);
var match = new MatchPattern(/(http:\/\/)(.*\.)*(myArray[x])(\/.*)*(\/)*/);
log("match result is: "+match.matches(myURL));
}//end for loop

我知道如何使用 require 在 Firefox Add-on SDK 中定义 Cu ,但是如何在 WebExtesnions 中定义它?

最佳答案

您不能在 WebExtensions 中使用组件

对于较旧的 Firefox 扩展类型,Components 对象提供对 Firefox 中低级功能的访问。常见的别名有:

  • 抄送 = Components.classes
  • Ci = Components.interfaces
  • Cu = Components.util
  • Cr = Components.results
  • Cm = Components.manager
  • 组件 = 组件

在附加 SDK 中,Chrome Authority 中对此进行了描述。文档并可通过使用

var {Cc, Ci, Cu, Cr, Cm, components} = require("chrome");

组件在WebExtensions中不存在

WebExtensions 中不存在对这些低级功能的访问。从您的代码中删除它并忘记它。不要尝试使用与其连接的任何东西,因为你做不到。删除对 Components 提供的低级功能的访问是迁移到 WebExtensions 的具体原因之一。

如果您在 MDN 上的页面中看到它,那么该页面与 WebExtensions 无关,在 WebExtensions 开发中应忽略该页面。您应该在每个此类页面的顶部看到一个大警告,指出您应该使用 WebExtensions 而不是该页面上描述的技术。当前(2017-06-17)的警告如下所示:

MDN old extension warning

如果您需要旧扩展中存在但 WebExtensions 中不存在的内容,请尝试 WebExtensions Experiment

您可以通过构建 WebExtensions 实验来扩展 WebExtensions 的功能。目的是允许附加开发人员为 WebExtensions 创建新的 API,建议将其纳入 Firefox。但是,不能保证此类提案实际上会集成到 Firefox 中。

关于javascript - 无法使用WebExtensions中的组件: get "ReferenceError: Cu is not defined",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44608110/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com