Jquery 动态Facebook开放图标签可能吗?

Jquery 动态Facebook开放图标签可能吗?,jquery,html,facebook-graph-api,facebook-opengraph,Jquery,Html,Facebook Graph Api,Facebook Opengraph,我正在使用jQuery(如下)动态更改我的和标记。当我通过Chrome中的“inspect”查看代码时,标签已成功更改 HTML: 但是仍然显示每个的content=“#”。我假设这是因为Facebook在Javascript有机会替换内容之前阅读了源代码 有办法解决这个问题吗 谢谢。Facebook根本不解析JavaScript,您不能使用动态开放图形标记。不管怎样,在飞行中改变它们是没有意义的 显然,您只能在服务器上动态更改OG标记。例如:https://yourdomain.com/dyn

我正在使用jQuery(如下)动态更改我的
标记。当我通过Chrome中的“inspect”查看代码时,标签已成功更改

HTML:

但是仍然显示每个的
content=“#”
。我假设这是因为Facebook在Javascript有机会替换内容之前阅读了源代码

有办法解决这个问题吗


谢谢。

Facebook根本不解析JavaScript,您不能使用动态开放图形标记。不管怎样,在飞行中改变它们是没有意义的

显然,您只能在服务器上动态更改OG标记。例如:
https://yourdomain.com/dynamicogtags.php?title=xxx&description=xxx

<meta property="og:title" content="<?php echo $_GET['title'];?>">

试试这个,它对我很管用

<?php

$params = array();
if(count($_GET) > 0) {
    $params = $_GET;
} else {
    $params = $_POST;
}
// defaults
if($params['type'] == "") $params['type'] = "restaurant";
if($params['locale'] == "") $params['locale'] = "en_US";
if($params['title'] == "") $params['title'] = "default title";
if($params['image'] == "") $params['image'] = "thumb";
if($params['description'] == "") $params['description'] = "default description";

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
    <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# MY_APP_NAME_SPACE: http://ogp.me/ns/fb/MY_APP_NAME_SPACE#">
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

        <!-- Open Graph meta tags -->
        <meta property="fb:app_id" content="MY_APP_ID" />
        <meta property="og:site_name" content="meta site name"/>
        <meta property="og:url" content="http://URL/index.php?type=<?php echo $params['type']; ?>&locale=<?php echo $params['locale']; ?>&title=<?php echo $params['title']; ?>&image=<?php echo $params['image']; ?>&description=<?php echo $params['description']; ?>"/>
        <meta property="og:type" content="MY_APP_NAME_SPACE:<?php echo $params['type']; ?>"/>
        <meta property="og:locale" content="<?php echo $params['locale']; ?>"/>
        <meta property="og:title" content="<?php echo $params['title']; ?>"/>
        <meta property="og:image" content="http://URL/img/<?php echo $params['image']; ?>.png"/>
        <meta property="og:description" content="<?php echo $params['description']; ?>"/>

    </head>
</html>


如前所述,Facebook根本不解析JavaScript

一种方法(我这样做的方式)是使用prerender.io之类的预渲染服务预渲染页面,并基于用户代理将来自web爬虫的请求重定向到预渲染服务器(您可以轻松找到如何使用google上的Nginx/Apache服务器进行预渲染)

预呈现服务生成页面的HTML/CSS呈现,但它们要等到页面完全加载并执行JavaScript后才能执行。这样,Facebook就会得到一个你的网站的呈现,其中JavaScript已经被执行,OpenGraph标签设置正确


Prerender是开源的,因此您可以免费运行自己的Prerender服务器

我早就知道了。我的问题是“想办法解决”我的问题。很多网站都这么做——一定有办法。没有办法,facebook就是不解析javascript。什么网站在做这件事?我不是说我需要使用Javascript来完成这件事。必须有一种方法可以动态加载
标记。Vimeo,Youtube,几乎所有这样的视频托管网站都能完美地与FB合作。我猜他们正在使用PHP为上传的每一个视频创建一个新页面?这有点超出范围,试试谷歌搜索“ApacheRewrite”,这里有很多关于重写url的信息。我不认为这是一个好主意,因为你仍然需要添加整个描述,而且可能会很长。这只是一个想法,但很糟糕。youtube获取视频密钥,查看他们的数据库并获取标签。如果你否决了某些内容,请说明原因。我的答案是100%正确的,但如果有什么遗漏,我很乐意改进它。说有一个解决办法不再有效了。也许有一天!您假设您将使用php,对于许多人来说,这不是一个可行的选择。
<meta property="og:title" content="<?php echo $_GET['title'];?>">
<?php

$params = array();
if(count($_GET) > 0) {
    $params = $_GET;
} else {
    $params = $_POST;
}
// defaults
if($params['type'] == "") $params['type'] = "restaurant";
if($params['locale'] == "") $params['locale'] = "en_US";
if($params['title'] == "") $params['title'] = "default title";
if($params['image'] == "") $params['image'] = "thumb";
if($params['description'] == "") $params['description'] = "default description";

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
    <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# MY_APP_NAME_SPACE: http://ogp.me/ns/fb/MY_APP_NAME_SPACE#">
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

        <!-- Open Graph meta tags -->
        <meta property="fb:app_id" content="MY_APP_ID" />
        <meta property="og:site_name" content="meta site name"/>
        <meta property="og:url" content="http://URL/index.php?type=<?php echo $params['type']; ?>&locale=<?php echo $params['locale']; ?>&title=<?php echo $params['title']; ?>&image=<?php echo $params['image']; ?>&description=<?php echo $params['description']; ?>"/>
        <meta property="og:type" content="MY_APP_NAME_SPACE:<?php echo $params['type']; ?>"/>
        <meta property="og:locale" content="<?php echo $params['locale']; ?>"/>
        <meta property="og:title" content="<?php echo $params['title']; ?>"/>
        <meta property="og:image" content="http://URL/img/<?php echo $params['image']; ?>.png"/>
        <meta property="og:description" content="<?php echo $params['description']; ?>"/>

    </head>
</html>