我的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错误可能与此相关)或是否有人设法使其正常工作?
答案 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.