5

我有一个脚本,它从选项卡中获取标题并将其分配给一个变量。但是,我还需要获取meta desctitle属性以在input字段中使用。

我不确定我是否可以通过以下方式实现这一目标:

chrome.tabs.getSelected(null, function(tab) {  
    var currentTitle = tab.title;  
});

然后我需要获取 Meta 描述,我不相信我可以从选项卡数据中获取。

这是我从中获取描述的 HTML:

<meta name="description" content="contentstuffya" />

这是我用来在扩展之外获取它的 Javascript:

document.getElementsByName('description')[0].getAttribute('content');

鉴于我拥有的数据,我将如何最好地做到这一点?

4

2 回答 2

9

标记的值<meta>只能通过内容脚本读取。这是一个例子:

var code = 'var meta = document.querySelector("meta[name=\'description\']");' + 
           'if (meta) meta = meta.getAttribute("content");' +
           '({' +
           '    title: document.title,' +
           '    description: meta || ""' +
           '});';
chrome.tabs.executeScript({
    code: code
}, function(results) {
    if (!results) {
        // An error occurred at executing the script. You've probably not got
        // the permission to execute a content script for the current tab
        return;
    }
    var result = results[0];
    // Now, do something with result.title and result.description
});

在第一行,我找到了<meta name="description">元素。content在第二行,如果元素存在,我会读取其属性的值。
的回调chrome.tabs.executeScript接收最后一个表达式的返回值,所以我在代码末尾放置了一个对象字面量(用括号括起来)。

于 2013-10-17T15:58:52.607 回答
-1

一个更好的方法是使用它。

  function getMeta(metaName) {
   const metas = document.getElementsByTagName('meta');

   for (let i = 0; i < metas.length; i++) {
    if (metas[i].getAttribute('name') === metaName) {
      return metas[i].getAttribute('content');
    }
   }

   return '';
  }

  console.log(getMeta('description'));

要获得标题,您可以使用

console.log(document.title)

如何使用 JavaScript 从元标记中获取信息?

于 2021-04-25T21:44:29.640 回答