使用 require.js 在 Chrome 扩展程序中调试内容脚本时遇到问题

2024-03-19

要在内容脚本中加载模块,我使用以下代码(源http://prezi.com/rodnyr5awftr/requirejs-in-chrome-extensions/ http://prezi.com/rodnyr5awftr/requirejs-in-chrome-extensions/):

require.load = function (context, moduleName, url) {
    var xhr;
    xhr = new XMLHttpRequest();
    xhr.open("GET", chrome.extension.getURL(url) + '?r=' + new Date().getTime(), true);
    xhr.onreadystatechange = function (e) {
        if (xhr.readyState === 4 && xhr.status === 200) {
            eval(xhr.responseText);
            context.completeLoad(moduleName)
        }
    };
    xhr.send(null);
};

通过 Chrome 控制台调试时会出现问题。每当我的模块之一出现错误时,它只会报告匿名函数中发生的错误,但不会通知我发生错误的是哪个 require.js 模块或该模块中的行,而是始终指向上面的脚本。

由于很多人在使用带有 chrome 扩展的 require.js 时似乎使用了上述代码的不同变体,因此必须有一种简单的方法可以在调试控制台中获取更多信息,我只是不知道那是什么:)。

感谢您的帮助!!

更新 4/1:将上面的 eval() 语句更改为使用 Function() 似乎已经解决了问题,因为 chrome 控制台添加了附加信息。 (这项工作的功劳归功于此question https://stackoverflow.com/questions/6684046/javascript-eval-method).

我意识到这两个功能不能完全互换(请参阅这个问题 https://stackoverflow.com/questions/4599857/is-eval-and-new-function-the-same-thing)。如果有人知道上面代码中使用 Function() 而不是 eval() 的任何陷阱,请告诉我!


你可以改变线路

        eval(xhr.responseText);

by

        eval(xhr.responseText + "\n//@ sourceURL=" + url);

这样,您将看到源代码面板中原始 url 下列出的所有评估代码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 require.js 在 Chrome 扩展程序中调试内容脚本时遇到问题 的相关文章

随机推荐

  • 如何列出导入的模块及其版本?

    我需要列出所有导入的模块及其版本 我的一些代码仅适用于特定版本 我想保存包的版本 以便将来再次查找 列出包的名称有效 modules list set sys modules set globals print modules 但如果我现在
  • 注入自动映射器

    我一直致力于将 AutoMapper 注入控制器 我喜欢 Code Camp Server 的实现 它围绕 AutoMapper 的 IMappingEngine 创建一个包装器 依赖注入是使用 StructureMap 完成的 但我需要在
  • 有什么办法让 gmaps4rails 在街景中打开地图吗?

    我尝试过更改缩放级别 但它始终保持在地图模式 在wiki上也找不到任何信息 任何帮助或其他建议将不胜感激 最终只使用了 Google 的 Javascript API 事情是这样的 pos new google maps LatLng va
  • 如何将 Knockout js 模型绑定到向导风格的 UI

    我正在使用 Knockout js 我有一个包含对象数组的视图模型 我希望允许用户使用向导样式界面编辑其中一个对象 我遇到的问题是向导将根据所做的选择显示不同的步骤 例如 如果用户在步骤 1 中选择 是 则我将显示步骤 2a 如果用户在步骤
  • 在读取文件之前检查文件是否已打开?

    我正在尝试制作一个小程序 它以非常频繁的间隔 每秒几次 读取本地文件系统 用户计算机 上的文件 然后通过 javascript 将文件的内容提供给网页 小程序需要读取的文件由用户计算机上的程序高频更新 我担心的是 如果小程序在文件更新过程中
  • toDF 的值不是 org.apache.spark.rdd.RDD 的成员

    例外 val people sc textFile resources people txt map split map p gt Person p 0 p 1 trim toInt toDF value toDF is not a mem
  • 在 GNU C 内联汇编中编写 Linux int 80h 系统调用包装器 [重复]

    这个问题在这里已经有答案了 我正在尝试使用内联汇编 我读过这一页http www codeproject com KB cpp edujini inline asm aspx http www codeproject com KB cpp
  • Python 日期时间:昨天的所有项目

    在 Python 中 如果我想检查昨天的所有项目 我会这样做 from datetime import datetime timedelta if datetime datetime today timedelta days 2 lt it
  • C# 将文本转语音保存到 MP3 文件

    我想知道是否有办法将文本到语音数据保存为 mp3 或 Wav 文件格式以便稍后播放 SpeechSynthesizer reader new SpeechSynthesizer reader Rate int 2 reader Speak
  • Windows 键的键码?

    有没有keyCodeWindows 键或用 Javascript 或 jQuery 检测何时按下的方法 I ve dug through StackOverflow and have found how to detect command
  • 如何在 JavaScript 中一次分配多个变量?

    有没有办法在 JavaScript 中执行多重赋值 如下所示 var a b one two 这相当于 var a one var b two 在 ES6 中你可以这样做 var a b one two 上面的代码是 ES6 表示法 称为数
  • 是否可以使用 Spring XML 访问字符串索引的 getter?

    Spring上下文设置XML语言中是否有 字符串索引 getters的概念 假设我有Persongetter 具有以下原型 class Person Person getRelative String relativeName 我可以用类似
  • Java引用同一目录中的类

    我创建了一个PairJava 中的类 类似于 C 对 并且无法从不同的 java 文件引用它 我正在一个 Java 文件中工作 我们称之为fileA在同一目录中Pair class 另外 我还写过package current direct
  • 使用 MVC2 的 AJAX 请求中的 CSRF 保护

    我正在构建的页面很大程度上依赖于 AJAX 基本上 只有一个 页面 并且每次数据传输都是通过 AJAX 处理的 由于浏览器端过度乐观的缓存会导致奇怪的问题 数据未重新加载 因此我必须使用 POST 执行所有请求 也读取 这会强制重新加载 现
  • React Native/Redux 应用程序中可能存在导航问题

    在使用 Redux 在大型 React Native 应用程序中导航期间 所有访问的场景 导航堆栈中的场景 都保持安装状态 当从最后一个场景组件调度任何动作时 所有这些场景都会接收道具并按照访问它们的顺序进行渲染 它会导致调度和最后一个场景
  • 如何使用消息代理和数据库设计分布式应用程序?

    我想实现一个分布式销售点系统 有点像中描述的系统销售点应用程序架构建议 https stackoverflow com questions 2454629 point of sale app architecture advice 它是一个
  • 如何pickle python 函数及其依赖项?

    作为这个问题的后续 有没有一种简单的方法来pickle python 函数 或以其他方式序列化其代码 https stackoverflow com questions 1253528 is there an easy way to pic
  • 为什么 JVM 不从数据库加载类?

    为什么Java虚拟机不从数据库加载类 类似于 NET的GAC 据我了解 目前它必须读取并扫描类路径上每个 JAR 的清单才能找到类文件 使用数据库 如 SQLite 不会缩短启动时间吗 之所以没有 是因为没有人将其添加到标准库中 此外 出于
  • 在分页页脚中,如果没有找到记录,Page [1 ] of 0 不是应该显示“Page [0 ] of 0”吗?

    我注意到 如果没有要返回的记录 那么分页页脚不应该说 0 of 0 而不是 1 of 0 吗 另外 分页文本框不应该也被禁用吗 这是我发送回 jqGrid 的 JSON 响应 total 0 page 0 records 0 rows 我正
  • 使用 require.js 在 Chrome 扩展程序中调试内容脚本时遇到问题

    要在内容脚本中加载模块 我使用以下代码 源http prezi com rodnyr5awftr requirejs in chrome extensions http prezi com rodnyr5awftr requirejs in