gpt4 book ai didi

javascript - 在 Mozilla Add-On SDK 中使用第三方 JS 库

转载 作者:行者123 更新时间:2023-11-28 10:11:24 26 4
gpt4 key购买 nike

我正在开始一个新项目(Firefox 插件),我想尝试使用行为驱动开发。我特别喜欢 Jasmine BDD 库。但是,我找不到如何在 Add-On SDK 中使用 Jasmine 等框架的好方法。

一个问题是 Jasmine 需要在全局对象上指定 setTimeout (和类似的)函数,而 Add-On SDK 使用“timers”模块导出这些函数。但假设我调整 Jasmine 以从“计时器”获取这些对象(或将计时器导出的方法添加到全局对象)。

更大的问题是我不知道如何实际运行测试。 SDK 生成了一个测试目录,但是,那里没有窗口或文档对象来允许我查看输出(而且我真的很想看到精美的 HTML 输出)。我想我可以创建一个内容脚本来修改页面,但随后我无法访问(测试)后台脚本。

您以前遇到过这种情况吗?有什么推荐的方法来处理这个问题吗?

谢谢!托马斯

最佳答案

您可以使用Add-on SDK windows API打开一个新窗口来运行测试。您应该能够使用 subscript loader 加载 Jasmine 脚本并将窗口和文档设置为该下标范围内您想要的任何内容:

var windows = require("windows").browserWindows;

windows.open({
url: "about:blank",
onOpen: function(window) {
var script;
var scriptLoader = Cc["@mozilla.org/moz/jssubscript-loader;1"].
getService(Ci.mozIJSSubScriptLoader);
scriptLoader.loadSubScript(subscriptSpec, script);
script["window"] = window;
script["document"] = window.document;
// ... run your tests here by calling script.someFunc() ...
}
});

更新:进一步的研究表明 browserWindows 实际上是特殊的包装器,不允许您访问内容窗口。您可以尝试从 hidden frame 获取窗口/文档。这是我能看到的从特权代码访问 HTML 文档的唯一方法。

关于javascript - 在 Mozilla Add-On SDK 中使用第三方 JS 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7405685/

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