使用 jQuery 设置动态元标签和 Open Graph 标签

Set dynamic Meta Tags and Open Graph tags using jQuery

我正在尝试使用 jQuery 添加动态标签,但它似乎不起作用。我在加载页面后直接加载我的脚本。

这是我的HTML

<!DOCTYPE html>
<html lang="en">
  <head>
    <script type="text/javascript" src="script.js"></script>
  </head>
  <body>
  </body>
</html>

这就是我在 jQuery 上添加标签的方式。

$(function() {
      $('head').append('<meta property="og:type" content="profile"/>'); 
      $('head').append('<meta property="og:url" content=""/>');
      $('head').append("<meta property='og:title' content="+text+"'/>");
      $('head').append("<meta property='og:image' content="+imageUrl+"'/>");
  });

我为什么要这样做?用户访问页面后 example.com/?link=HDI635 我想简要介绍一下内容。因此,我使用 jQuery 进行了 API 调用,之后我想将 API 响应中的值添加到 Open Graph 标签。

如果您的标签的目的是在 Facebook 等网站上生成内容预览,那么使用 jQuery 可能不起作用,因为大多数网络爬虫不会 运行 JavaScript,它们只需下载 HTML 并按原样阅读即可。

要使其正常工作,您需要在服务器端生成标签。

您可以使用 Facebook 的共享调试器调试您的标签: https://developers.facebook.com/tools/debug/

正如 Alan 所说,大多数网络爬虫不会 运行 JavaScript,它们只是下载 HTML 并按原样阅读。到今天为止,FB 爬虫还没有。

一个好的解决方案是让服务器(nginx 就足够了)来检测访问者的用户代理,如果它是 Facebook 的用户代理(https://developers.facebook.com/docs/sharing/webmasters/crawler/),则提供一个简单的 HTML OG标签。否则,提供网络应用程序。

您可以像这样使用 JavaScript 更新元标记:

const title = "your title;
const description = "your description";
$('meta[name="description"]').attr('content', description);
$('meta[property="og:title"]').attr('content', title);
$('meta[property="og:description"]').attr('content', description);
// etc.

Google 确实读取和 运行 JavaScript 东西,它至少读取元名称标签。参见 https://developers.google.com/search/docs/guides/javascript-seo-basics