2011-05-04 102 views
2

我想在我的網站上使用Facebook的Like按鈕。如何從外部URL檢查Iframe的內容

這是如此簡單,大家都知道,但我在我們國家的審查有問題。 Facebook在我們的國家被審查,如果我使用簡單的iframe,那些無法訪問Facebook的人(無法通過審查)將會看到我不想要的阻止頁面。

所以我想檢查是否加載地址就是Facebook展示他們的iframe否則(它們將被重定向到另一個網站)隱藏iframe

有什麼方法可以讓我找到答案?我的意思是像地址或內容或ID等什麼


這裏是我的代碼:

<html> 
    <head> 
    <title>facebook test</title> 
    <style> 
    .facebook{ 
     display:none; 
     } 
    </style> 
    <script type="text/javascript" src="jquery.js"></script> 

    </head> 
    <script type="text/javascript"> 
    $.ajax({ 
     url: 'https://graph.facebook.com/btaylor?callback=?', 
     dataType: 'json', 
     success: function(data) { 
      $(".faceboock").show(); 
      // alert('success - facebook works'); 
      // alert('data = ' + JSON.stringify(data)); 
     }, 
     error: function() { 
      alert('error - facebook fails'); 
     } 
    }); 
    </script> 

    <div class="faceboock"> 
    <iframe src="http://www.facebook.com/plugins/likebox.php?href=http%3A%2F%2Fwww.facebook.com%2Fpages%2Fmypage%2F152215541478267&amp;width=292&amp;colorscheme=light&amp;show_faces=true&amp;stream=true&amp;header=true&amp;height=427" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:292px; height:427px;" allowTransparency="true"></iframe> 
    </div> 

它的工作原理,當客戶端訪問Facebook,我的意思是「成功:函數」的作品,但錯誤功能沒有。

問題是,當Facebook無法訪問,json從不迴應。

是否有任何方法來設置響應超時或其他任何事情來處理錯誤?

回答

1

您無法檢查與您的代碼不在同一個域中的iframe的內容。

Same Origin Policy

  • iframe.src可以不受限制進行檢查,但不會改變當重定向發生
  • iframe.contentWindow.location.href不會改變時重定向發生,但不能由於上述安全限制,在您的情況下訪問

我能想到的唯一的方法來測試,這是:

  1. 做一個JSONP調用(JSONP沒有域限制)Facebook的API中的一個
  2. 檢查響應
    如果這些JSONP調用會被重定向,但它很可能會拋出異常而不是返回期望的值(由於它會嘗試將javascript解析爲最有可能成爲fullhtml頁面的響應)

這是一個使用jQuery執行JSONP調用的working example
它從我的位置工作,你可以測試它,看看你是否得到錯誤警報?
您也可以在您的瀏覽器中訪問示例中的網址。如果facebook.com被重定向,但這一個不比你必須找到其他方式來檢查它...