javascript - Chrome.ExecuteScript 问题

标签 javascript google-chrome-extension

目前我正在使用以下代码将警报语句注入(inject)网页,打印出我传入的变量。脚本如下:

  //Inject statement setting the variable "count" in the webpage to 5
  chrome.tabs.executeScript(id, {
       code: 'count = 5;'
  }); 

  //Inject the script that simply alerts the variable count (alert(count);)
  chrome.tabs.executeScript(id, {
       file: 'inject.js'
  });

  //Inject statement setting the variable "count" in the webpage to 5+1
  chrome.tabs.executeScript(id, {
       code: 'count++;'
  }); 

  //Inject the script that simply alerts the variable count (alert(count);)
  chrome.tabs.executeScript(id, {
       file: 'inject.js'
  });

理想情况下,我希望得到先提示“5”然后提示“6”的结果。但是,尽管我在代码中增加了变量“count”,但网页在两个语句中都只警告“5”。我是对 chrome.tabs.executeScript 有什么误解,还是忽略了一个简单的错误?

最佳答案

请注意 chrome.tabs.executeScript 是一个异步调用,这意味着在您调用 chrome.tabs.executeScript(id, {code: 'count++;'});count 的值可能尚未更新,因此结果将是 56

chrome.tabs.executeScript有一个回调,在 JavaScript 执行后调用。您可以将您的方法包装在其中。

chrome.tabs.executeScript(id, {code: 'count++;'}, () => chrome.tabs.executeScript(id, {file: 'inject.js'}));

关于javascript - Chrome.ExecuteScript 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37558529/

相关文章:

javascript - 无法加载资源 404(未找到)- 文件位置错误?

javascript - 如何在 chrome 扩展中加载 Google Analytics 和 Facebook SDK?

javascript - 在外部页面上运行 jQuery/调试 jQuery

javascript - 如何编辑特定 URL 的文档值? ( Chrome )

javascript - 淡入淡出效果影响我的输出

javascript - 我应该尝试在 JavaScript 类中强制执行强数据类型吗?

javascript - 将 Firefox 插件和 Chrome 插件之间的共享代码导入 Firefox

javascript - Google chrome api javascript 检测在浏览器中打开的文件

javascript - 删除由 iframe 小部件提供支持 - 不显示且 css 不起作用

javascript - 检测浏览器对动画 GIF 图像的支持