Firefox 附加组件 window.navigator.userAgent 错误:窗口未定义

2024-01-18

我想得到userAgent https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID/userAgent并想对其进行一些解析:

我的代码是:

var userAgentInfo = {
    userAgent: null,

    init: function() {
        this.userAgent = window.navigator.userAgent;//ERROR
    },

    getOS: function(UA) {
        //Some logic
    },

    getDevice: function(UA) {
        //Some logic
    },
    getBrowser: function(UA) {
        //Some logic
    },
};

每当我尝试启动/测试此扩展时,我都会收到以下错误:

Running tests on Firefox 24.3.0/Gecko 24.3.0 ({ec8030f7-c20a-464f-9b0e-13a3a9e97384}) under linux/x86-gcc3.
Error: ReferenceError: window is not defined 
 Traceback (most recent call last):
  File "resource://jid1-u33krawc1uacsa-at-jetpack/amazon_rewriter/tests/test-main.js", line 1, in 

我怎样才能得到userAgent这里没有获取窗口和导航器对象?


Firefox 附加组件通常运行在全局范围内window对象未定义(是否定义取决于当前运行的代码部分的输入方式)。如果要使用与窗口对象关联的方法/对象,最简单的方法是获取对适当窗口对象的引用window目的。对于某些/许多事情,可以在不获取此类引用的情况下执行此操作,但通常更容易获取对最新浏览器窗口的引用。

如果存在浏览器窗口(在某些情况下,您可能在不存在浏览器窗口的情况下运行,例如在启动时),您可以获得对最新浏览器的引用window, document, and gBrowser with:

if (window === null || typeof window !== "object") {
    //If you do not already have a window reference, you need to obtain one:
    //  Add/remove a "/" to comment/un-comment the code appropriate for your add-on type.
    //* Add-on SDK:
    var window = require('sdk/window/utils').getMostRecentBrowserWindow();
    //*/
    /* Overlay and bootstrap (from almost any context/scope):
    var window=Components.classes["@mozilla.org/appshell/window-mediator;1"]
                         .getService(Components.interfaces.nsIWindowMediator)
                         .getMostRecentWindow("navigator:browser");        
    //*/
}
if (typeof document === "undefined") {
    //If there is no document defined, get it
    var document = window.content.document;
}
if (typeof gBrowser === "undefined") {
    //If there is no gBrowser defined, get it
    var gBrowser = window.gBrowser;
}

缺乏全球性window对象可用是许多人遇到的问题。

参考:

  1. SDK: 窗口/实用程序 https://developer.mozilla.org/en-US/Add-ons/SDK/Low-Level_APIs/window_utils
  2. SDK: windows https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/windows
  3. nsIWindowMediator https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWindowMediator
  4. 在 chrome 代码中使用 Windows https://developer.mozilla.org/en-US/docs/Working_with_windows_in_chrome_code
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Firefox 附加组件 window.navigator.userAgent 错误:窗口未定义 的相关文章

  • JW Player javaScript API 不工作

    我使用 jwplayer version 5 10 2295 和浏览器 chrome 25 My code jwplayer container setup file path width 300px height 100px autost
  • 如何使用 HTML 5 实现类似 gmail 的文件上传/附件

    我记得一些支持 Ajax 之类的选项 无回发世界 文件上传 隐藏的 iframe 使用 flash 对象 尽管我仍然好奇为什么使用 SWF 以及它提供什么优势 然而 通过查看博客 HTML 5 似乎很有前途 我尝试了一些小示例 它确实有效
  • 如何实时改变setInterval的速度

    我想知道如何实时更改 setInterval 的速度 例如 if score lt 10 repeater setInterval function spawnEnemy 1000 if score gt 10 repeater setIn
  • MailTo 从 Javascript

    我有一个链接按钮 用于从页面内容构建邮件 从 javascript 启动它而不打开空白窗口或干扰调用它的窗口的最佳方法是什么 function Email var sMailTo mailto var sBody var alSelecte
  • 哪个 Firefox 版本与 Selenium 2.48.0 兼容

    谁能帮我 哪个 Firefox 版本与 Selenium 2 48 0 兼容 Selenium WebDriver 2 48 支持到 firefox 41 0 版本 有关更多详细信息 请查看 selenium webdriver 的更新日志
  • Angular UI select:从远程服务获取数据

    我正在使用角度用户界面选择 https github com angular ui ui select https github com angular ui ui select 我查看了演示的可用位置这个笨蛋 http plnkr co
  • 在 R 传单中添加不透明度滑块

    如何在 R leaflet 应用程序中添加滑块来控制特定图层的不透明度 对于这个应用程序 我不想使用闪亮 这里建议 在 R 传单应用程序中添加滑块 https stackoverflow com questions 37682619 add
  • 这种类型注释在没有 TypeScript 的 React 代码中如何工作?

    我在看这段代码示例 https reacttraining com react router web example auth workflow在 ReactRouter 页面上 这篇文章很有趣 const PrivateRoute com
  • jQuery输入文件点击方法和IE上拒绝访问

    我尝试仅使用一个按钮作为输入文件 它在 Firefox Chrome Safari 中工作正常 但在 IE 中不行 提交表单时我总是收到 访问被拒绝 的消息 代码 input file click 有真正的解决方法吗 我在谷歌上浪费了大约2
  • API 使用令牌向 odoo 进行身份验证

    我想使用令牌从 Express 应用程序向 Odoo 进行身份验证 我在用odoo xmlrpc https www npmjs com package odoo xmlrpc连接 Odoo 的节点模块 我的快递应用程序 Odoo 要求 A
  • 访问 nuxt 配置文件中的存储

    我想添加通过 Nuxt 静态生成的动态路由 我定义了一个客户端 服务器端存储asyncData方法 我想将这个存储值 一个数组 映射到我的nuxt config js文件使其成为 动态 静态 路线图nuxt generate命令 但如何访问
  • 如何在 React Native 上显示 SVG 文件?

    我想显示 svg 文件 我有一堆 svg 图像 但我找不到显示的方式 我尝试使用Image and Use的组成部分反应本机 svg https github com magicismight react native svg但他们不这样做
  • C# 和 Javascript SHA256 哈希的代码示例

    我有一个在服务器端运行的 C 算法 它对 Base64 编码的字符串进行哈希处理 byte salt Convert FromBase64String serverSalt Step 1 SHA256Managed sha256 new S
  • 检索 css3 缩放元素的宽度/高度

    我正在与 offsetWidth 属性的奇怪之处 我认为 作斗争 这是场景 比方说 我有一个span标签 在我的js中 在某个时刻我执行css3转换 对于这个元素 例如 el set styles transform scale scale
  • 使用 JQuery 禁用和启用所有超链接

    我有以下禁用所有超链接的内容 但在事件发生后我想再次启用它们 我该如何执行此操作 a click function return false 我认为这不仅仅是将其设置为 true 那么简单 谢谢大家 不要以这种方式绑定 点击 处理程序 而是
  • 模板中带有 ng-if 的 angularjs 指令

    我正在构建一个在模板内使用 ng if 的指令 奇怪的是 提供给链接函数的元素没有扩展ng if代码 它只是ng if的注释行 经过一番尝试 我发现通过将链接代码包装在 timeout 中似乎可以使其正常工作 但我想知道这是否不是正确的处理
  • Web组件中嵌套槽的内容不可见

    我有一个 Web 组件 它应该接受任意元素来包装其内容 虽然我可以在 Chrome 开发工具中看到插槽已正确分配 但 DOM 中什么也没有出现 以前有人见过这个问题吗 定义 class ExampleParent extends HTMLE
  • 如何重复 ajax 请求,直到满足 RxJS Observable 的条件?

    我正在尝试重复请求 直到响应包含使用 RxJS 的数据 此时我想调用成功 或失败 处理程序 但我在使用 RxJS 时遇到了麻烦 这是我目前的方法 redux observable action observable mergeMap gt
  • PDF 在 Safari 中隐藏 Jquery Modal

    这是与我有关的事情this https stackoverflow com questions 24052681 pdf hide jquery modal in ie问题 在 IE 中 我在对话框中使用 iframe 解决了问题 所以它工
  • MongoDB:javascript执行失败:无法在 src/mongo/shell/collection.js 保存 DBQuery 对象

    在 MongoDb 中 当我尝试修改集合中的现有文档时 它会生成以下异常 javascript execution failed can t save a DBQuery object at src mongo shell collecti

随机推荐

  • android.permission.BATTERY_STATS 使用情况

    我正在探索有关电池的 Android API 选项 什么可能性授予许可android permission BATTERY STATS 如果我可以在不声明此类权限的情况下读取电池电量的 android intent action BATTE
  • Flash 和 Google Drive SDK 无法相互通信

    我需要创建一个连接到 Google Drive SDK 的 Flash Web 应用程序来检索公共二进制文件 但我面临跨域安全问题 我可以使用 javascript 来做到这一点跨站点 xmlhttprequest与 CORS 在 AS3
  • 序列化向量

    我正在尝试为我正在开发的游戏实现加载和保存 我要保存的是 A char 二维数组 矩阵 An ArrayList
  • Flex网格:左右交替

    使用弹性盒 我想将一系列 div 垂直放置在包含 div 的下方 有些左 有些右 其中每个 div L 和 R 是容器 div 宽度的 70 L div 必须固定到容器的左侧 R div 必须固定到容器的右侧 L R L L R R R L
  • Geopandas PostGIS 连接

    我最近开始在 python 中使用 Geopandas 进行一些空间工作 并且对此非常满意 我目前正在尝试阅读 PostGIS 功能 但不太了解如何参数化数据库连接 而且似乎不清楚在文档中 GeoDataFrame from postgis
  • 为什么将 Visual Studio 解决方案添加到 TFS 时空文件夹会消失?

    我有这个 Visual Studio 解决方案 其中包含一个项目 该项目具有由多个空文件夹组成的模板文件夹树 当我使用 源代码管理 gt 将解决方案添加到源代码管理 菜单项将此解决方案添加到 Team Foundation Server T
  • 隐藏 QLPreviewController 的右键?

    我在应用程序中对 QLPreviewController 进行子类化并使用以下代码 QLPreviewControllerSubClass preview QLPreviewControllerSubClass alloc init sel
  • 您可以在创建现有的 mysql 触发器后对其进行修改吗?

    In mysql我可以创建一个触发器 然后显示有关它的信息 如下所示 mysql gt show triggers like fooTrigger 该命令提供的输出看起来非常像 select 语句 其中一行显示匹配的触发器 是否可以更新它向
  • 通过 Raven Studio 中的 RQL 将额外的列/字段添加到 RavenDB 集合

    我试图通过向每个实体添加额外的字段来更新整个集合 这doesn t做这件事 from things as t update put id t NewField 有人可以帮忙解决一下语法吗 Thanks Just do from things
  • 如何在VIM中映射CAPS LOCK键?

    我在Windows下使用VIM 并希望将 CAPSLOCK 映射到 Ctrl 有办法做到这一点吗 顺便说一句 我在网上看到了大量如何使用注册表 hack 交换 CAPS 和 Esc 的示例 但它们都没有使用 VIM 映射命令 而是使用外部工
  • Slim 框架 - 无法用点解释路由

    问题陈述 我目前正在开发内部 RESTful API 并使用我们的主域名作为环境标识符 然而 我注意到 Slim 根本不喜欢其中有点的路线 示例案例 我有一个使用 PHP 内置 Web 服务器运行的本地 Web 服务器 并且我调用了php
  • 读取 Vertex AI Pipelines 中的数据

    这是我第一次使用 Google 的 Vertex AI Pipelines 我检查了这个代码实验室 https codelabs developers google com vertex pipelines intro hl en 0也这个
  • 在任务管理器中更改进程名称[重复]

    这个问题在这里已经有答案了 我有一个在服务器上运行的 Windows 窗体应用程序 现在我需要同时运行同一应用程序的多个实例 每个实例将连接到不同的数据库 在应用程序启动期间 我更改了标题 以便可以识别正在连接的数据库 但我也想更改任务管理
  • 如何在 Visual Studio 项目模板中使用变量设置文件名

    我有一个 VS 2013 项目模板 其中包含如下项目
  • 添加/组合标准差

    简洁版本 可以添加 组合标准差吗 IE if StdDev 11 14 16 17 X and StdDev 21 34 43 12 Y can we calculate StdDev 11 14 16 17 21 34 43 12 fro
  • Android - 按钮彼此相邻

    我无法将按钮放在一起 我已经研究过这个话题 但似乎没有任何帮助 这是我的 XML 代码 Link http pastebin com d6gxDLTU 现在的显示方式如下 我的屏幕 https i stack imgur com ocagu
  • 使用javascript从mp3读取id3标签

    我知道以前已经有人问过这个问题 但我的条件有点不同 我正在制作一个 Chrome 应用程序 因此我可以访问它支持的所有最新 JavaScript 文件 api 而不必担心兼容性 更重要的是 我真的很想自己做这件事 即没有任何图书馆 教程或指
  • PostgreSQL 跨服务器查询? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 有没有办法可以查询位于 服务器 2 上的数据库并获取 服务器 1 中的数据 那就是将一组记录从远程服务器返回到我的本地服务器 PS 不
  • char数组前面的&号会影响scanf吗?合法吗?

    我们平时输入字符串的时候是这样做的 include
  • Firefox 附加组件 window.navigator.userAgent 错误:窗口未定义

    我想得到userAgent https developer mozilla org en US docs Web API NavigatorID userAgent并想对其进行一些解析 我的代码是 var userAgentInfo use