1

問題:fullCalendar、IE 11、refetchEventsのみ火災をデバッガ/ Developerウィンドウ[F12]が開いている

fullCalendarがsuccesfullのAJAX呼び出しの後.fullCalendar('refetchEvents')を使用してイベントを更新しません。


使用

  • MSIE 11.0.41(11.0.9600.18638) - 問題発生
  • FireFoxの53.0(32ビット) - 問題が発生しない
  • Chrome 58.0.3029.81(64ビット) - 問題は発生しません。

  • VS2015、ローカルホスト上のC#MVC、IISエクスプレス
  • fullcalendar.jsのV3.3.0
  • のjQuery-3.1.1.js
  • jqueryの-UI-1.12.1.js

症状の説明:

デバッガ/開発者のウィンドウが開いている場合、コールバックが来ると、$.ajaxコール

$.ajax({ 
     type: 'POST', 
     url: '@Url.Action("SaveEvent","Calendar")', 
     data: dataRow, 
     success: function (response) { 
       if (response == 'True') { 
        $('#_Calendar').fullCalendar('refetchEvents'); 
        alert('New event saved!'); 
       } 
       else { 
        alert('Error, could not save event!'); 
       } 
      } 
     }); 

の下fullCalendarの'refetchEvents'方法使用してfullCalendarにMSIE、11- -inする唯一の火を新しいイベントを挿入します。実際のブレークポイントが設定されているかどうかは関係ありません。デバッガ/デベロッパーウィンドウを開いてルーチンを動作させるだけですか?

$.ajaxコールから完全に分離した'refetchEvents'をトリガーする動作も同じです。 I.機能付き

<button type="button" class="btn" onclick="fetchEvents(); return false;">trigger</button> 

:私は以下のように機能をトリガーする場合

function fetchEvents() { 
    $('#_Calendar').fullCalendar('refetchEvents'); 
} 

効果はまったく同じである、「refetchEvents」意志MSIE -inのみ火災、11-デバッガ/開発者の窓の場合オープンですか?

私はそれがタイミングの問題かもしれないと思ったので、私の手作業によるトリガーオプションですが、イベントが挿入された後には'refetchEvents'コールが途中であっても動作は同じです。デバッガ/開発者ウインドウが開いているときにも、ページリフレッシュによって'refetchEvents'イベントがリフレッシュされるのはトリガされません(MSIE 11)。

このように、私がテストしたどのプラットフォームのブラウザでも同じ結果が得られませんか? (FireFox/Chrome/Safari/Android [Chrome & FireFox]すべて正常に動作します...)

誰かがこの動作に遭遇する可能性がありますか、

あなたのご意見をお寄せいただきありがとうございます。

+0

これは* *は、このために発生するために使用します:http://stackoverflow.com/questions/7742781/why-does-javascript-only-work-after-opening-developer-tools-in-ie-onceしかし、IE11には影響しません、関連する提案のポストを参照してくださいキャッシング。 –

+0

クイックレスポンスをうかがって、提案された投稿から '$ .ajax({cache:false、...}) 'オプションを試しましたが、運はありません... – mtholen

答えて

1

IEがカレンダーの予定をキャッシュするのにあまりにも熱心で、イベントを更新しないのは、本当にキャッシュ問題です。


私はthis questionと幻想的な答えを偶然見つけ、より早い段階で解決

。 少し後で私はまたthis questionと同様に良い答えを述べました。

私は2つの属性を以下のように1つの属性にまとめました。だから、

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)] 
public sealed class NoCacheAttribute : ActionFilterAttribute 
    { 
    public override void OnResultExecuting(ResultExecutingContext filterContext) 
     { 
     filterContext.HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1)); 
     filterContext.HttpContext.Response.Cache.SetValidUntilExpires(false); 
     filterContext.HttpContext.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches); 
     filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache); 
     filterContext.HttpContext.Response.Cache.SetNoStore(); 

     //Added later from: https://stackoverflow.com/questions/49547/how-to-control-web-page-caching-across-all-browsers 
     filterContext.HttpContext.Response.AppendHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1. 
     filterContext.HttpContext.Response.AppendHeader("Pragma", "no-cache"); // HTTP 1.0. 
     filterContext.HttpContext.Response.AppendHeader("Expires", "0"); // Proxies. 

     base.OnResultExecuting(filterContext); 
     } 
    } 

[NoCache]属性と私のGetDiaryEvents方法を飾ることで、JSON応答が適切に返される値をキャッシュしないブラウザを言って、正しいヘッダでタグ付けされています。

ので、同じように:

//GET: All Diary events 
    [NoCache] 
    public JsonResult GetDiaryEvents(string start, string end) 
     { 

     // code code code... 

     var rows = eventList.ToArray(); 
     return Json(rows, JsonRequestBehavior.AllowGet); 

     } 

だからJSONメッセージは次のようにブラウザに送信されます。解決

HTTP/1.1 200 OK 
Cache-Control: no-cache, no-store, must-revalidate 
Pragma: no-cache 
Content-Type: application/json; charset=utf-8 
Expires: -1 
Server: Microsoft-IIS/10.0 
X-AspNetMvc-Version: 5.2 
X-AspNet-Version: 4.0.30319 
X-SourceFiles: =?UTF-8?B?SDpcTWFydGlqbiBUaG9sZW5cTXkgRG9jdW1lbnRzXFZpc3VhbCBTdHVkaW8gMjAxNVxQcm9qZWN0c1xGaW5pc2hMaW5lXzQuMlxGaW5pc2hMaW5lXzQuMlxDYWxlbmRhclxHZXREaWFyeUV2ZW50cw==?= 
X-Powered-By: ASP.NET 
Date: Thu, 04 May 2017 09:36:35 GMT 
Content-Length: 9265 

問題...

関連する問題