动态更改 Facebook 发送按钮的 URL

Posted

技术标签:

【中文标题】动态更改 Facebook 发送按钮的 URL【英文标题】:Dynamically change the URL of a Facebook Send Button 【发布时间】:2012-02-04 03:05:51 【问题描述】:

我正在尝试使用 javascript ,但到目前为止我还没有成功。

我有一个设置了几个输入的页面,我希望发送按钮的 URL 在发送之前将字段值作为参数。问题是当我将发送按钮添加到页面时,它会在内部生成 iframe 代码,即使我稍后修改 href 参数,iframe 仍然保留原始链接。我想解决方案是刷新内容以某种方式发送按钮或在页面加载后添加它,一旦字段完成,但我无法弄清楚。

感谢您的帮助。

【问题讨论】:

你真正想要完成什么? 例如,我有一个名称输入。如果你把 Julio 放进去,发送按钮应该发送 URL myurl?name=Julio 当输入改变时,使用新参数重新渲染发送按钮 iframe 然后使用FB.XFBML.parse(); 【参考方案1】:

你不能这样做。 Javascript 不能用于控制与您的域不同的 iFrame。这是由于Same Origin Policy。

您可以做的是更改发送按钮 xfbml 标记上的参数,然后调用 FB.XFBML.parse(); 以便按钮使用新参数。

【讨论】:

谢谢,这有助于我更改 URL。现在我的问题是 Facebook 发送按钮似乎正在剥离 URL 字符串的参数...即:myurl.com?x=1&y=2 变为 myurl.com?x=1&fb_source=message... 我不明白为什么会这样。但是,如果 FB 只允许一个参数,请使用默认编码以外的编码。例如,您可以使用myurl.com?myparams=x_1|y_2。这会将x_1|y_2 视为myparams 的值,然后您将进行相应的解析。 该解决方案可以工作,尽管不幸的是我已经有了第一个参数,它是我的页面的 id,所以我无法破解它......我尝试添加 # 而不是 &,但FB也摆脱了它。 不是真的,我正在为一个已经以这种方式建立的大网站进行开发,所以我不能在这种情况下。【参考方案2】:

您可以尝试使用 iFrame 版本的like 按钮而不是 XFBML 版本。可以在表单提交后通过 AJAX 调用将点赞按钮后加载到页面中,在该调用中您已经传递了表单中填写的数据。

【讨论】:

谢谢。听起来它可以工作,问题是我不能使用任何服务器端脚本文件。它只能在 html 和 JS 中完成,在同一页面上。

以上是关于动态更改 Facebook 发送按钮的 URL的主要内容,如果未能解决你的问题,请参考以下文章

Facebook 发送按钮返回“无效来源”错误

如何仅使用登录名和密码获得 facebook 的动态令牌?

Facebook发送按钮导致水平滚动

facebook发送按钮返回状态码200

如何在按钮单击时将用户发送到 Facebook 页面(Facebook Messenger)

facebook“发送”按钮打开一个空白框