在两个应用程序中使用时,ckeditor 未在 IE 中加载

Posted

技术标签:

【中文标题】在两个应用程序中使用时,ckeditor 未在 IE 中加载【英文标题】:ckeditor not loading in IE when used in two applications 【发布时间】:2016-11-15 17:17:53 【问题描述】:

我有一个存储 ckeditor 的中心位置。

Header Web 应用在 IE、Firefox 和 Chrome 中成功使用 ckeditor。

始终为域中的所有 Web 应用程序加载标头。

Web 应用程序 X 需要 ckeditor。 Web 应用程序等待(使用超时)CKEDITOR 对象可用,然后使用它。

这适用于 Chrome 和 Firefox,但不适用于 IE。我在这里错过了什么?

IE 中的超时继续进行,但 CKEDITOR 对象永远不可用。

代码:

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>

脚本:

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());

注意:我没有在 Web 应用程序 X 中包含 ckeditor

ckeditor在IE中加载似乎有问题的那一行在这里:

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

“src”不可用。会不会是反缓存设置导致 IE 加载出现问题?

加载过程中的错误信息:

“错误:无效参数。\n 在匿名函数 (http://domain.com/includes/ckeditor/ckeditor.js?anti-cache=09Jun2016&=1468730100637:5:431)\n 在匿名函数 (http://domain.com/includes/ckeditor/ckeditor.js?anti-cache=09Jun2016&=1468730100637:5:153)\n 在匿名函数 (http://domain.com/includes/ckeditor/ckeditor.js?anti-cache=09Jun2016&=1468730100637:5:78)\n 在全局代码 (http://domain.com/includes/ckeditor/ckeditor.js?anti-cache=09Jun2016&=1468730100637:5:2)”

【问题讨论】:

请提供您正在使用的 HTML,如果可能的话,请提供一个可以证明问题的有效小提琴。 【参考方案1】:

我能够通过检查我的应用程序中加载的所有脚本来解决问题。其中一个脚本加载有问题,阻碍了 ckeditor 在 IE 上的加载。

【讨论】:

【参考方案2】:

您还可以通过更改应用程序中脚本的顺序来解决此问题。

【讨论】:

以上是关于在两个应用程序中使用时,ckeditor 未在 IE 中加载的主要内容,如果未能解决你的问题,请参考以下文章

ckeditor gem custom config.js 未在生产中加载

Magnolia CkEditor InternalLink 未在工具栏中列出

CKEditor 去除 <i> 标签

程序集特定设置未在运行时加载

使用 Spring Security 时如何允许 CKEditor 在 Grails 中上传图像

什么是 C++ 中的“变量‘i’未在范围内声明”?