tabs.detectLanguage()

使用紧凑语言检测器(CLD)检测标签页内容的主要语言。

这是一个返回 Promise 的异步函数。

语法

js
let detecting = browser.tabs.detectLanguage(
  tabId,                  // 可选整数
  callback                // 可选函数
)

参数

tabId 可选

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

callback 可选

function。目前,如果指定了 tabId,该方法将使用此回调函数返回结果,而不是返回一个 promise。回调函数接收一个包含检测到的语言代码(例如 enfr)的字符串作为唯一输入参数。

返回值

一个 Promise,其会兑现一个结果为代表 ISO 语言代码的字符串,如 enfr。有关该方法支持的完整语言列表,请参见 kLanguageInfoTable。对于未知语言,将返回 "und"(但请参见 bug 1288263)。如果发生任何错误,则该 promise 将以错误消息拒绝。

示例

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

js
function onLanguageDetected(lang) {
  console.log(`语言是:${lang}`);
}

function onError(error) {
  console.log(`发生错误:${error}`);
}

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

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

js
function onLanguageDetected(url, lang) {
  console.log(`在 ${url} 中的语言是:${lang}`);
}

function onError(error) {
  console.log(`发生错误:${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);
});

浏览器兼容性

BCD tables only load in the browser

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