在Facebook应用程序中重定向'喜欢'(IE7)

时间:2012-03-29 02:58:48

标签: javascript facebook sdk internet-explorer-7

我目前正在使用新的时间轴布局为客户构建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中单击“赞”时,它只是坐在那里并且不运行重定向。我看不出任何错误。正如我所说的所有其他浏览器都进行了重定向。

我已经坚持了很长一段时间,所以任何帮助都会非常感激。

干杯

1 个答案:

答案 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';
});

警报出现了吗?如果确实如此,则确认事件被捕获,但浏览器阻止重定向。一个好的解决方法是除了尝试重定向之外还显示“继续”按钮,以防重定向在某些浏览器中不起作用。