2016-07-13 9 views
3

Ich habe eine zentrale Stelle, wo Ckeditor in gespeichert.ckeditor nicht geladen in IE, wenn in zwei Anwendungen verwendet

Header Web-Anwendung verwendet ckeditor erfolgreich in IE, Firefox und Chrome.

Der Header wird die ganze Zeit für alle Webanwendungen in der Domäne geladen.

Die Webanwendung X benötigt ckeditor. Die Webanwendung wartet (mit Timeouts) darauf, dass das CKEDITOR-Objekt verfügbar ist und verwendet es dann.

Dies funktioniert in Chrome und Firefox, aber nicht in IE. Was fehlt mir hier?

Die Timeouts in IE gehen weiter, aber das CKEDITOR-Objekt ist nie verfügbar.

Code:

namespace Models 
{ 
    using System.ComponentModel.DataAnnotations; 

    public class EmailModel 
    { 
     public int EmailID { get; set; } 
     public string FromAddress { get; set; } 
     public string ToAddresses { get; set; } 

     [Required(ErrorMessage = "Subject is required.")] 
     [StringLength(50, ErrorMessage = "Subject cannot be greater than 50 characters.")] 
     public string Subject { get; set; } 

     [Required(ErrorMessage = "Body is required.")] 
     public string Body { get; set; } 
    } 
} 

Html:

@model Models.EmailModel 

@{ 
    ViewBag.Title = "Email Template Details"; 
} 

<h2>Email Template Details</h2> 

<script type="text/javascript" src="~/Scripts/EmailDetails.js?version=06.07.2016_1156"></script> 

<div> 
    <hr /> 
    <dl class="dl-horizontal"> 
     <dt> 
      @Html.DisplayNameFor(model => model.FromAddress) 
     </dt> 

     <dd> 
      @Html.DisplayFor(model => model.FromAddress) 
     </dd> 

     <dt> 
      @Html.DisplayNameFor(model => model.Subject) 
     </dt> 

     <dd> 
      @Html.DisplayFor(model => model.Subject) 
     </dd> 

     <dt> 
      @Html.DisplayNameFor(model => model.Body) 
     </dt> 

     <dd> 
      @Html.HiddenFor(model => model.Body) 
      <textarea id="editorBodyDetails" name="editorBodyDetails" style="display:none"></textarea> 
     </dd> 

    </dl> 
</div> 
<p> 
    @Html.ActionLink("Edit", "Edit", new { id = Model.EmailID }) | 
    @Html.ActionLink("Email Templates", "Index") 
</p> 

Script:

var countCKEDITORAttemps = 0; 

$(function() { 

    initializeCKEDITOROnceLoaded(countCKEDITORAttemps); 

}); 

function initializeCKEDITOROnceLoaded(countCKEDITORAttemps) { 
    var interval = 1000; // ms 
    if (countCKEDITORAttemps < 100) { 
     window.setTimeout(function() { 
      if (typeof(CKEDITOR) !== 'undefined') { 
       setupCKEditor("editorBodyEdit"); 
      } else { 
       countCKEDITORAttemps = countCKEDITORAttemps + 1; 
       console.log("Loading CKEDITOR:" + countCKEDITORAttemps * 1000 + "milliseconds"); 
       window.setTimeout(initializeCKEDITOROnceLoaded(countCKEDITORAttemps), interval); 
      } 
     }, interval); 
    } 
} 

function setupCKEditor(id) { 
    CKEDITOR.replace(id, { height: 200, }); 
    CKEDITOR.instances[id].setData($("#Body").val()); 
} 

HINWEIS: Ich bin auch nicht ckeditor in Web-Anwendung X

Die Linie, an der Teilnehmer laden g in IE scheint ein Problem zu haben ist hier:

var b=d[c].src.match(a); 

Die "src" ist nicht verfügbar. Könnte es sein, dass die Anti-Cache-Einstellung Probleme beim Laden des IE verursacht?

Fehlermeldung beim Laden:

„Fehler:. Invalid argument \ n an anonyme Funktion (http://domain.com/includes/ckeditor/ckeditor.js?anti-cache=09Jun2016&=1468730100637:5:431) \ n an anonyme Funktion (http://domain.com/includes/ckeditor/ckeditor.js?anti-cache=09Jun2016&=1468730100637:5:153) \ n an anonyme Funktion (http://domain.com/includes/ckeditor/ckeditor.js?anti-cache=09Jun2016&=1468730100637:5:78) \ n bei Global-Code (http://domain.com/includes/ckeditor/ckeditor.js?anti-cache=09Jun2016&=1468730100637:5:2) "

+0

Bitte geben Sie den HTML-Code an, mit dem Sie arbeiten, und wenn möglich eine funktionierende Geige, die das Problem veranschaulicht. – Dekel

Antwort

1

Ich konnte das Problem lösen, indem ich alle Skripte, die in meiner Anwendung geladen wurden, überprüfe. Eines der geladenen Skripte hatte ein Problem und behinderte das Laden von CKeditor auf IE.

-1

Sie können dies auch beheben, indem Sie die Reihenfolge Ihrer Skripts in der Anwendung ändern.