我目前正在使用新的时间轴布局为客户构建Facebook应用程序,这意味着没有登陆页面等。无论如何,有一个我们希望用户去的应用程序,其中有一个烦人的'Fan Gates'在哪里必须'喜欢'页面才能查看完整的应用程序。我们决定在页面内部设置一个“赞”按钮,这意味着我需要在点击“赞”后手动进行刷新/重定向以显示正确的应用程序。
我正在使用此代码来实现此目的:
<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_GB/all.js#xfbml=1&appId=xxxx";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
<script>
window.fbAsyncInit = function() {
// Javascript SDK Settings
FB.init({
appId : 'xxx',
status : true, // check login status
channelUrl : 'https://www.xxx.com/assets/apps/channel.html', // Channel File
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
// Automatically increase height of our canvas.
FB.Canvas.setAutoGrow();
// When they click the like button within our app refresh the page and take them to our app.
FB.Event.subscribe('edge.create', function(href, widget) {
window.top.location = '//www.facebook.com/xxx/app_xxx';
});
};
</script>
<div id="like"><div class="fb-like" data-href="xxx" data-send="false" data-layout="button_count" data-width="100" data-show-faces="false"></div></div>
<img src="/assets/apps/lyc/img/nolike.jpg" />
为了快速浏览它,我们需要包含类似按钮和我需要的功能的javascript sdk。然后我设置SDK设置,自动增加iframe的长度,最后得到我的点击事件功能,如果单击该按钮,我将它们带到应用页面。
除IE7外,其他地方都能正常工作。当您在IE7中单击“赞”时,它只是坐在那里并且不运行重定向。我看不出任何错误。正如我所说的所有其他浏览器都进行了重定向。
我已经坚持了很长一段时间,所以任何帮助都会非常感激。
干杯
答案 0 :(得分:0)
我怀疑IE7阻止了您的JavaScript重定向,因为它不考虑点击iFrame(Like按钮)内部作为有效的用户交互。 IOW,这是Web浏览器的重定向阻塞机制。要确认这是真的,请更改以下代码:
FB.Event.subscribe('edge.create', function(href, widget) {
alert('You clicked like!');
window.top.location = '//www.facebook.com/xxx/app_xxx';
});
警报出现了吗?如果确实如此,则确认事件被捕获,但浏览器阻止重定向。一个好的解决方法是除了尝试重定向之外还显示“继续”按钮,以防重定向在某些浏览器中不起作用。