我有一个使用 Facebook like 小部件的小型网络应用程序。此页面还使用查询字符串来动态加载内容。我需要根据查询字符串动态确定分配给 Facebook 小部件的 href。这是我如何定义小部件的示例:
<div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#appId=186609524720286&xfbml=1"></script>
<fb:like id="fbLike" href="http://apps.facebook.com/inflatableicons/image_preview.html" send="true" width="450" show_faces="true" font="">
</fb:like>
但我真正需要的是这样的:
<div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#appId=186609524720286&xfbml=1"></script>
<fb:like id="fbLike" href="http://apps.facebook.com/inflatableicons/image_preview.html?y=119" send="true" width="450" show_faces="true" font="">
</fb:like>
请注意,第二个示例中的 href 以 ?y=119 结尾,但第一个示例没有。我的问题是,在我看到将哪个查询字符串传递给 html 页面之前,我不知道将哪个值作为小部件的查询字符串。谁能解释我如何在 href 中插入动态值?在这样的事实之后,我首先尝试设置 href:
<div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#appId=186609524720286&xfbml=1"></script>
<fb:like id="fbLike" href="#" send="true" width="450" show_faces="true" font="">
</fb:like>
<script>
var url = 'http://apps.facebook.com/inflatableicons/image_preview.html?y=120';
document.getElementById('fbLike').setAttribute('href', url);
console.log(document.getElementById('fbLike'));
</script>
但是当我这样做时,小部件抱怨未设置href,奇怪的是,当我打印getElementById的值时,它显示了我用setAttrbibute设置的href,即使小部件认为它设置不正确并给出错误。我相信由于某种原因,小部件不允许我在事后设置 href。
编辑:
我还尝试使用 ferni 在他的回答中描述的 jQuery 示例,但这似乎不起作用:
<div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#appId=186609524720286&xfbml=1"></script>
<fb:like id="fbLike" href="#" send="true" width="450" show_faces="true" font="">
</fb:like>
<script>
var url = 'http://apps.facebook.com/inflatableicons/image_preview.html?y=120';
jQuery("#fblikeblock").html('<fb:like id="fbLike" href="'+url+'" send="true" width="450" show_faces="true" font=""></fb:like>');
FB.XFBML.parse(document.getElementById('fblikeblock'));
console.log(document.getElementById('fblikeblock'));
</script>
我将 console.log 添加到脚本的末尾以打印 fblikeblock 的值并返回 null 所以这可能是问题的一部分。