0

そこで、Facebook ウォールからデータを取得して Web サイトに投稿するスクリプトを作成しました。このスクリプトは Firefox と chrome、そして私の携帯電話で問題なく動作するので、safari もそうだと思います。とはいえ、いつものように、Internet Explorer は楽しいものであることに決めました。

そこで、getJSON 呼び出しを使用して Facebook の URL にアクセスし、データを返します。次に、必要なデータの一部を取得し、それを HTML コードに配置します。このコードは、返送されて Web サイトに表示されます。明らかに、これを Internet Explorer でも使用できるようにしたいと考えています。うまくいけば、誰かがそれを見て、それを修正する方法を見つけることができます (または私のコードを改善します:D)。私は Javascript / JQuery をそれほど頻繁には使用せず、いくつかの基本的なことを行うことができますが、このような問題を修正することになると、すぐに迷ってしまいます。以下にスクリプトを投稿します。ありがとう

アップデート

そこで、スクリプトにエラー コールバックを追加して、問題の原因を確認しました。Internet Explorer では No Transport エラーが発生しますが、他のブラウザでは発生しません。これに対する修正を知っている人はいますか?

var myNewData, myOldData;

function fbstream() {
  var restart_counter, url, time, date, html, post_count;
  url = "https://graph.facebook.com/xyz/posts?limit=7&access_token=121936661313114|YX63lMRU9wc8RDP8MMSs9keT3fQ";
  $.getJSON(url, function (json) {
    html = "<div class='fbfeed'>";
    if (json.data[0] === undefined && restart_counter < 5) {
      fbstream();
      restart_counter += 1;
    } else if (json.data[0] === undefined && restart_counter === 5) {
      $('.facebookfeed').html("Problem loading Facebook content");
    } else {
      post_count = 0;
      if (myNewData !== undefined) {
        myOldData = myNewData;
      }
      myNewData = json.data[0].id;
      if (myOldData !== myNewData || myOldData === undefined) {
        $.each(json.data, function (i, fb) {
        if (fb.message !== undefined) {
          post_count += 1;
          date = fb.created_time.substring(0, 10).split("-", 3).reverse().join("-", 3);
          time = fb.created_time.substring(11, 19);
          html += "<div class='fbpost'><div class='dateandtime'>" + date + " at " + time + "</div><div class='fbmsg'>" + fb.message + "</div>";
          if (fb.picture !== null) {
            html += "<div class='fbimg'><img src='" + fb.picture + "' class='center' /></div>";
          }
          html += "</div>";
          if (post_count === 3) {
            return false;
          }
        }
      });
      html += "</div>";
      $('.facebookfeed').html(html);
    }
  }
});
restart_counter = 0;
}
setInterval(function () {
  fbstream();
}, 300000); 

読みやすいように、できる限りフォーマットしてみました。パーツが少しずれている可能性があります。

タイトルが示すように、getJSON がクエリを実行する URL にアクセスすると、Internet Explorer は posts.js という名前のファイルを返します。Firefox と chrome では、その URL は大量の json データを含む新しいページで開かれます。

必要に応じて、json データの例を投稿できます

これは、リクエストされた post.js のアイテムです。他にもありますが、参考までに一つだけ。

{
"data": [
  {
     "id": "3688793151660_5429280924451",
     "from": {
        "category": "Energy/utility",
        "name": "xyz",
        "id": "3688793151660"
     },
     "message": "And after !",
     "picture": "http://photos-h.ak.fbcdn.net/hphotos-ak-ash3/123.jpg",
     "link": "http://www.facebook.com/photo.php?fbid=282413452&set=a.368887806484148.88464.368879353151660&type=1&relevant_count=1",
     "icon": "http://static.ak.fbcdn.net/rsrc.php/v2/yz/r/StEh33hPvjk.gif",
     "privacy": {
        "value": ""
     },
     "type": "photo",
     "status_type": "added_photos",
     "object_id": "542928413452",
     "application": {
        "name": "Facebook for iPhone",
        "namespace": "fbiphone",
        "id": "66268379"
     },
     "created_time": "2013-03-07T15:24:00+0000",
     "updated_time": "2013-03-07T15:24:00+0000",
     "likes": {
        "data": [
           {
              "name": "removed",
              "id": "1000392350"
           },
           {
              "name": "removed",
              "id": "721372"
           }
        ],
        "count": 2
     },
     "comments": {
        "count": 0
     }
  },
  "paging": {
  "previous": "https://graph.facebook.com/3688793151660/posts?limit=7&access_token=121936661313114|YX63lMRU9wc8RDP8MMSs9keT3fQ&since=1362669840&__previous=1",
  "next": "https://graph.facebook.com/3688793151660/posts?limit=7&access_token=121936661313114|YX63lMRU9wc8RDP8MMSs9keT3fQ&until=1358410924"
   }
}

フォーマットが少し乱雑で、一部の ID / 名前が編集 / 削除されています

4

1 に答える 1

0

問題が修正されました。

Internet Explorer の「トランスポートなし」エラーについてグーグル検索した後、このサイトで見つけた次のコード行を追加しました

jQuery.support.cors = true;
于 2013-03-08T23:36:33.037 に答える