从内容脚本调用chrome.i18n.getMessage(...)

时间:2011-05-22 17:51:26

标签: javascript google-chrome google-chrome-extension

我的Google Chome扩展程序通过以下方式使用其清单中声明的​​内容脚本:

  "content_scripts": [
    {
      "matches": ["<all_urls>"],
      "js": ["js/jquery-1.6.1.min.js", "js/content.js"]
    }
  ],

它还附带了_locales/en中与本地化相关的资源包。

使用chrome.i18n.getMessage(...)查找密钥可以从一般扩展代码(即options.html)中完美地工作,但是当从js/content.js执行时它会失败(即,不会返回任何内容)该脚本正在常规网页的上下文中运行。

这是一般性限制吗(this Chrome错误可能与此相关)或是否有人设法使其正常工作?

3 个答案:

答案 0 :(得分:3)

您应该能够使用内容脚本中的chrome.i18n.getMessage(...)。尝试重新启动整个浏览器。

目前正在运行:版本24.0.1297.0 dev-m

我也受到了这种打击。我不确定原始海报的情况,但我的问题是由错误(http://code.google.com/p/chromium/issues/detail?id=53628)引起的,在Thilo的错误报告的回复中引用了该错误。问题是当从Extensions manager页面重新加载扩展时,重新加载messages.json是不可靠的。我最初用一个空的messages.json开始,然后在我尝试使用chrome.i18n.getMessage时添加到它。我也没有收到任何错误,但没有按预期收到我的消息。虽然它听起来不合逻辑,并且对于一般的开发来说是新手,但我认为这可能是那些无法从内容脚本运行的API之一。幸运的是,事实并非如此。

答案 1 :(得分:1)

我想说需要创建一个bug report

它没有说它应该工作的任何地方,但它不会抛出一个错误,chrome.i18n.getMessage也无法从内容脚本访问,就像所有其他API调用一样。所以这已经是一个错误了。

这将是一个很好的功能。我认为他们开始实施它,但要么忘记要么离开它更好的时间。错误报告将是一个很好的提醒。

同时,您可以通过消息传递从后台页面获取本地化字符串。也许在内容脚本的开头发送一个请求,请求您需要的所有字符串的数组。

答案 2 :(得分:0)

激活扩展名时,字符串只会被加载一次。

当函数返回“”时,这意味着找不到索引。

只需转到“Chrome扩展程序”禁用并重新启用扩展程序。

然后该函数返回本地化的字符串 - 正如预期的那样@ Chromium 31.