最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Redirect from Facebook canvas page to website - Stack Overflow

programmeradmin3浏览0评论

Is there a way to redirect from my Facebook canvas page to my external website? I've seen blogs and stackoverflow answers of the form:

<script>
window.top.location = '/';
</script>

Unfortunately these kinds of solutions never work. I've tried top.location.href, window.location and location.href as well.. nothing works. Did Facebook remove the possibility to redirect from javascript by parsing out this kind of code? Is there a way to still redirect?

UPDATE: What happens is the webpage acts like there was never a javascript redirect instruction. And in fact, when I look at the source code through firebug I see no javascript redirects.

UPDATE 2: I get the following javascript errors form my canvas page when I try window.top.location = '/'; and the other variations above. It seems Facebook doesn't allow access to the window, top or location global javascript variables:

Uncaught ReferenceError: a217374027657_location is not defined
Uncaught ReferenceError: a217374027657_window is not defined
Uncaught ReferenceError: a217374027657_top is not defined

Interestingly, document.location = '/'; works in that there are no exceptions... but of course the webpage doesn't get redirected.

UPDATE 3: Figured it out! Javascript redirect only works with iframe canvases. I had to change my settings in the advanced screen to use iframe instead of FBML.

Is there a way to redirect from my Facebook canvas page to my external website? I've seen blogs and stackoverflow answers of the form:

<script>
window.top.location = 'http://www.yoursite.com/';
</script>

Unfortunately these kinds of solutions never work. I've tried top.location.href, window.location and location.href as well.. nothing works. Did Facebook remove the possibility to redirect from javascript by parsing out this kind of code? Is there a way to still redirect?

UPDATE: What happens is the webpage acts like there was never a javascript redirect instruction. And in fact, when I look at the source code through firebug I see no javascript redirects.

UPDATE 2: I get the following javascript errors form my canvas page when I try window.top.location = 'http://www.yoursite.com/'; and the other variations above. It seems Facebook doesn't allow access to the window, top or location global javascript variables:

Uncaught ReferenceError: a217374027657_location is not defined
Uncaught ReferenceError: a217374027657_window is not defined
Uncaught ReferenceError: a217374027657_top is not defined

Interestingly, document.location = 'http://www.yoursite.com/'; works in that there are no exceptions... but of course the webpage doesn't get redirected.

UPDATE 3: Figured it out! Javascript redirect only works with iframe canvases. I had to change my settings in the advanced screen to use iframe instead of FBML.

Share Improve this question edited Aug 23, 2011 at 9:58 at. asked Aug 23, 2011 at 7:53 at.at. 52.5k105 gold badges303 silver badges470 bronze badges 3
  • When you say it doesn't work, what does happen? – shanethehat Commented Aug 23, 2011 at 8:12
  • Nothing happens. The canvas webpage doesn't get redirected, it just sits there. – at. Commented Aug 23, 2011 at 8:21
  • @at: thanks for your UPDATE. Now I understand what's wrong. – Hoàng Long Commented Aug 29, 2011 at 8:42
Add a comment  | 

5 Answers 5

Reset to default 8

how about using the following code:

 <script type='text/javascript'>
    top.location.href = 'http://www.yousite.com';
 </script>

Beware, redirecting the user to an external site can violate the platform policy

The primary purpose of your Canvas or Page Tab app on Facebook must not be to simply redirect users out of the Facebook experience and onto an external site.

From my script

    <script type='text/javascript'>
            top.location.href = 'http://riseofkings.net/fb.php?setcook&cook=cookhere';
     </script>

And it always worked. Does it throw any error, exception or so?

If you can use PHP, try to die() after this javascript code

I just did this on my app:

    if(window.top.location.href != window.location.href){
    window.top.location.href = window.location.href;
    }
    
Just place that on the top of your canvas page. If the top href doesn't match the url your canvas content is pulled from, it redirects to your site.

This is not possible, Facebook disabled this functionality on purpose. You'd either have to stay in your canvas, open a popup (if possible) or just create a link for the user to click on.

发布评论

评论列表(0)

  1. 暂无评论