我想显示所选标签的区域设置(html源代码的lang属性),并将其显示在我的Chrome-Extension的popup.html中。这样做。我的popup.html是:
<div id="pageLocale">Page Locale is: <b> <script src="write.js"></script></b></div>
我的write.js是:
chrome.tabs.executeScript(null,{code:"document.write(document.documentElement.lang)"});
如果我使用它,我会将所选标签的内容全部留空,只显示区域设置字符串。我明白这里有什么问题。 我想知道,我如何使用&#34; document.documentElement.lang&#34;提取lang属性。对于当前选项卡并将其返回到我的popup.html。单击chrome-extension图标时,选中的当前选项卡不应为空白。请帮帮我们。
答案 0 :(得分:0)
通过调用document.write
中的chrome.tabs.executeScript
,您将覆盖文档的内容(正如您所观察到的那样)。通常,您不应使用document.write
。
并且不要使用document.documentElement.lang
,因为如果页面没有设置,它可以为空。相反,请使用chrome.tabs.detectLanguage
。这是一个例子:
// write.js
(function() {
var thisScriptElement = document.currentScript;
chrome.tabs.detectLanguage(null, function(language) {
var node = document.createTextNode(language);
// Replace <script> with the text
thisScriptElement.parentNode.replaceChild(node, thisScriptElement);
});
})();
如果确实想要获取lang
属性的值(即使它是一个空字符串),那么您需要使用chrome.tabs.executeScript
,如下所示:< / p>
// write.js
(function() {
var thisScriptElement = document.currentScript;
chrome.tabs.executeScript(null, {
code: 'document.documentElement.lang;'
}, function(result) {
var language = result[0]; // Last expression's result in the top frame.
var node = document.createTextNode(language);
// Replace <script> with the text
thisScriptElement.parentNode.replaceChild(node, thisScriptElement);
});
})();