【发布时间】:2017-08-25 19:25:22
【问题描述】:
我的最终目标很简单:
- 用户单击 UI 上的某个按钮。
-
click调用的 Typescript 函数会在 facebook 上为用户打开一个新的共享选项卡。 - 共享页面的“标题”和“描述”均由我的网站提供。
我们有一篇关于在所链接页面上包含元标记的帖子,fb 知道将其包含为标题/描述 (How do I customize Facebook's sharer.php)。问题是我使用的是 Angular 2,所以我必须在 facebook 看到它之前以某种方式为页面动态添加元标记。
我很难想象它是如何工作的,因为我假设 FB 服务器将访问我的 NG2 应用程序并搜索元标记(因此在打开共享链接的浏览器中编辑元标记是没有意义的,因为 FB API 会获取 html 的不同实例)。
tl;dr:如何从 NG2 应用打开 fb url 共享对话框并提供标题/说明?
注意:“分享到 fb”页面可以像这样简单地打开:
window.open('http://www.facebook.com/sharer/sharer.php?u=www.google.com'); 这可行,但没有参数。
可选附录(动态添加元标记的示例代码,有效,但没有帮助):
var titleMeta = document.createElement('meta');
var descMeta = document.createElement('meta');
titleMeta.setAttribute('property', 'og:title');
titleMeta.setAttribute('content', 'The Rock');
descMeta.setAttribute('property', 'og:description');
descMeta.setAttribute('content', 'Foo Description');
document.getElementsByTagName('head')[0].appendChild(titleMeta);
document.getElementsByTagName('head')[0].appendChild(descMeta);
附录 2:共享者过去允许您在 url 中输入标题和描述,但根据 https://developers.facebook.com/x/bugs/357750474364812/ 已不再是这种情况。看起来它必须从元标记中提取。
【问题讨论】:
-
您需要将这些元标记添加到您要共享的实际页面。阅读您发布的链接中的答案。
-
如果该页面是 angular 2 组件,我该怎么做?
-
不管它是什么。无论您在何处创建 html 页面的实际头部,您都将在其中添加元标记。
标签: javascript facebook angular meta-tags