想法:将点赞按钮放入 iFrame,将点赞按钮放置在 iFrame 的右侧,并为 iFrame 设置与弹出框的宽度和高度相等或稍高的宽度和高度。通过这种方式,您可以“告诉”Facebook 该页面在“赞”按钮的右侧结束,Facebook 将相应地在左侧显示弹出窗口。
警告:您将无法在 iFrame 下方的任何元素上接收点击事件。因此,您需要使用鼠标悬停和鼠标移出事件来操作 iframe 的 z-index 按钮。这意味着,该方法不适用于移动设备。但由于您有一个专门的移动网站(也包括平板电脑),因此该解决方案可能适合您。 更新:我还没有针对这个问题的完整解决方案。
工作示例(尝试按钮和锚点):
父.html
<!doctype html>
<html lang="en" xmlns:fb="http://ogp.me/ns/fb#">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
iframe {
z-index: -1;
}
.top-layer {
z-index: 1;
}
</style>
</head>
<body>
<div id="fb-root"></div>
<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
<div class="wrapper" style="position: relative; overflow: hidden; width: 600px; height: 800px; margin: 0 auto; z-index: 0; background-color: yellow;">
<a onclick='window.alert("click");' style="position: absolute; left: 200px; top: 100px;">click me</a>
<fb:like style="position: absolute; left: 360px;" href="http://www.allyou.com/static/weekly-circulars/" send="false" layout="button_count" width="140" show_faces="false" fb-xfbml-state="rendered" class="fb_edge_widget_with_comment fb_iframe_widget"></fb:like>
<iframe style="position: absolute; width: 600px; left: -160px; height: 600px; top: 50px;" src="child.html" frameborder="0"></iframe>
</div>
</body>
</html>
child.html
<!doctype html>
<html lang="en" xmlns:fb="http://ogp.me/ns/fb#">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js" ></script>
</head>
<body>
<div id="fb-root"></div>
<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
<fb:like onmouseover="$(parent.document).find('iframe').addClass('top-layer');" onmouseout="$(parent.document).find('iframe').removeClass('top-layer');" style="position: absolute; right: 0;" href="http://www.allyou.com/static/weekly-circulars/" send="false" layout="button_count" width="140" show_faces="false" fb-xfbml-state="rendered" class="fb_edge_widget_with_comment fb_iframe_widget"></fb:like>
</body>
</html>