Google chrome extension 调用chrome.devtools.inspectedWindow.reload with injection会导致Aw Snap

Google chrome extension 调用chrome.devtools.inspectedWindow.reload with injection会导致Aw Snap,google-chrome-extension,google-chrome-devtools,Google Chrome Extension,Google Chrome Devtools,我正在尝试创建一个工具来监视网页中某些JavaScript API的使用情况。我的计划是重写JavaScript API,将调用信息存储到一个全局变量中,然后通过postMessage将其发送到内容脚本。但是,将下面类似的代码注入网页会导致“Aw Snap”错误 这可能是一种安全限制。但是有什么方法可以实现我的目标吗 ---更新--- 如果删除postMessage()调用,则不会发生错误。 而且,如果我删除Array.prototype重写代码,它也不会发生。 在我看来,调用postMessa

我正在尝试创建一个工具来监视网页中某些JavaScript API的使用情况。我的计划是重写JavaScript API,将调用信息存储到一个全局变量中,然后通过postMessage将其发送到内容脚本。但是,将下面类似的代码注入网页会导致“Aw Snap”错误

这可能是一种安全限制。但是有什么方法可以实现我的目标吗

---更新--- 如果删除postMessage()调用,则不会发生错误。 而且,如果我删除Array.prototype重写代码,它也不会发生。 在我看来,调用postMessage()并同时覆盖数组的原型是导致错误的原因。

问题在于

"window.counter = 0;",
"Array.prototype.push = function () {",
"window.counter++;",
"}",
"window.addEventListener('message', function(event) {",
"window.postMessage('Array.push() has been called ' + window.counter + ' times.', '*');",
"}, false);"
代码,我不确定你想要实现什么

我希望您知道,除非关闭窗口,否则计数器在一帧中始终为零

问题在于

"window.counter = 0;",
"Array.prototype.push = function () {",
"window.counter++;",
"}",
"window.addEventListener('message', function(event) {",
"window.postMessage('Array.push() has been called ' + window.counter + ' times.', '*');",
"}, false);"
代码,我不确定你想要实现什么


我希望您知道,除非关闭窗口,否则计数器在一帧中始终为零

这是Array.prototype.push之后的语法错误

您需要以分号结束该行

...
var code = [ 
        "window.counter = 0;",
        "Array.prototype.push = function () {",
          "window.counter++;",
        "};", //<-- Here
        "window.addEventListener('message', function(event) {",
          "window.postMessage('Array.push() has been called ' + window.counter + ' times.', '*');",
        "}, false);"
      ];
...
。。。
var代码=[
“window.counter=0;”,
“Array.prototype.push=函数(){”,
“window.counter++;”,

“};”,//这是Array.prototype.push之后的语法错误

您需要以分号结束该行

...
var code = [ 
        "window.counter = 0;",
        "Array.prototype.push = function () {",
          "window.counter++;",
        "};", //<-- Here
        "window.addEventListener('message', function(event) {",
          "window.postMessage('Array.push() has been called ' + window.counter + ' times.', '*');",
        "}, false);"
      ];
...
。。。
var代码=[
“window.counter=0;”,
“Array.prototype.push=函数(){”,
“window.counter++;”,

“};”,//API引用声明“如果指定,脚本将在加载时立即注入到检查页面的每个帧中,在任何帧脚本之前。”它实际上在我删除postMessage调用时起作用。API引用声明“如果指定,脚本将在加载时立即注入到检查页面的每个框架中,在框架的任何脚本之前。”它实际上在我删除postMessage调用时按说明工作。这不再相关,但您需要在window.addEventListener行之前插入一个;。”};“而不是“}”“啊哈!这只是一个语法错误……无论如何,谢谢你指出这一点,乔诺!难道你不能帮我解决这个问题吗?这不再相关了,但你需要在window.addEventListener行之前使用;”};“而不是”}”啊哈!这只是一个语法错误…无论如何,谢谢你指出这一点,乔诺!难道你不能帮我解决这个问题吗?