tabs.detectLanguage()

使用 Compact Language Detector (CLD) 检测标签页内容的主要语言。

这是一个异步函数,返回一个 Promise

语法

js
let detecting = browser.tabs.detectLanguage(
  tabId,                  // optional integer
  callback                // optional function
)

参数

tabId 可选

integer。默认为当前窗口的活动标签页。

callback 可选

function。当前,如果指定了 tabId,则此方法将使用此回调来返回结果,而不是返回一个 Promise。回调的唯一输入参数是一个包含检测到的语言代码(例如 enfr)的字符串。

返回值

一个 Promise,它将以代表 ISO 语言代码(例如 enfr)的字符串解析。有关此方法支持的语言的完整列表,请参阅 kLanguageInfoTable。对于未知语言,将返回 "und"(但请参阅 bug 1288263)。如果发生任何错误,Promise 将被拒绝并显示错误消息。

示例

当用户点击浏览器操作时,检测并记录活动标签页的语言。

js
function onLanguageDetected(lang) {
  console.log(`Language is: ${lang}`);
}

function onError(error) {
  console.log(`Error: ${error}`);
}

browser.browserAction.onClicked.addListener(() => {
  browser.tabs.detectLanguage().then(onLanguageDetected, onError);
});

当用户点击浏览器操作时,检测并记录每个打开标签页的语言(请注意,此示例需要 "tabs" 权限)。

js
function onLanguageDetected(url, lang) {
  console.log(`Language in ${url} is: ${lang}`);
}

function onError(error) {
  console.log(`Error: ${error}`);
}

function detectLanguages(tabs) {
  for (const tab of tabs) {
    browser.tabs
      .detectLanguage(tab.id)
      .then((lang) => onLanguageDetected(tab.url, lang), onError);
  }
}

browser.browserAction.onClicked.addListener(() => {
  browser.tabs.query({}).then(detectLanguages, onError);
});

浏览器兼容性

注意: 此 API 基于 Chromium 的 chrome.tabs API。本文档源自 Chromium 代码中的 tabs.json