Javascript 如何动态设置和调整JS页面';Facebook共享的meta og标签?
这个问题与我几天前提出的问题密切相关 我正在构建一个angularJS web应用程序。我目前正在尝试使用该模块,允许该web应用程序生成页面标题和元标记的动态条目,以便“无论何时用户从我的web应用程序发布链接,Facebook都能显示图像、标题和描述。我正在使用帮助我解决这个问题 但这对我不起作用。以下是我用于web应用启动页的状态:Javascript 如何动态设置和调整JS页面';Facebook共享的meta og标签?,javascript,html,angularjs,facebook,facebook-graph-api,Javascript,Html,Angularjs,Facebook,Facebook Graph Api,这个问题与我几天前提出的问题密切相关 我正在构建一个angularJS web应用程序。我目前正在尝试使用该模块,允许该web应用程序生成页面标题和元标记的动态条目,以便“无论何时用户从我的web应用程序发布链接,Facebook都能显示图像、标题和描述。我正在使用帮助我解决这个问题 但这对我不起作用。以下是我用于web应用启动页的状态: $stateProvider.state('splash', { url: '/', templateUrl: '
$stateProvider.state('splash', {
url: '/',
templateUrl: 'html/splash.html',
controller: 'SplashCtrl',
data: {meta: {'title': 'XXXXXXXXXXXX',
'description': 'YYYYYYYYYYYY'}}});
这是我的控制器:
myApp.controller('SplashCtrl', function($scope, ngMeta) {
var self = this;
console.log('self = ', self);
ngMeta.setTag('description', 'DDDDDDDD');
这是我的
这是我的模板文件,splash.html
,在状态声明中引用:
<div ng-controller="SplashCtrl as splashCtrl">
HELLO WORLD
</div>
你好,世界
当我擦掉这个启动页面时,看看Facebook的调试器报告了什么(仅供参考,我的私人信息已被擦掉):
为什么我在SplashCtrl中设置的描述('DDDDDDDD'
)没有出现在Facebook的scraper中?我怎样才能把它修好呢
顺便说一句,我已经使用run()
块成功初始化了ngMeta。我知道它在工作,因为当我加载这个页面时,index.html
中的{{ngMeta.title}}
正确地显示为aaaaaa
所以ngMeta.setTitle()确实有效。那么如何设置和访问其他属性,如描述、图像等?所有元标记都绑定良好,您可以通过查看页面来查看 我认为facebook工具读取的是你页面的源代码,而不是初始化的angular应用程序(就像你在chrome中按CTRL+U键查看源代码一样,你会看到数据没有模板化) 这对于共享来自angular应用程序的内容并不重要。Facebook将注意读取绑定值,而不是范围变量 但是,如果您不希望源代码中有任何范围变量,
答案可能是解决方案您是否使用运行块初始化了ngMeta?是。我有。我知道它在工作,因为当我加载这个页面时,来自
index.html
的{{ngMeta.title}}
正确地显示为AAAAA
嗨,删除状态中的[description],你不能为当前状态设置两个描述,这是一个绑定。Maher,我做了。然而,这没有任何区别。你可以在这里看到自己的网站:Facebook scraper不关心任何客户端JavaScript。它只关心服务器在请求URL时返回的HTML代码;该HTML代码包含OG元数据。