所以我正在制作一个需要 HTML输入框的MVC网站.
我有一个从ajax对话框窗口加载的文本区域.据我所知,当我隐藏对话框时,TinyMCE需要我删除控件,这很好.

但是我无法让编辑器加载.我使用版本4.1.9(2015-03-10)与jquery模块.
即tinymce.jquery.js& jquery.tinymce.min.js

对话窗口打开后,我打电话给这个;

$("textarea").tinymce({
    // General options
    mode: "textareas",theme: "modern",// Theme options
    menubar: false,toolbar: "bold,italic,underline,|,bullist,numlist",statusbar: false,init_instance_callback: function (editor) {
        console.log("tinymce init: " + editor.id);
    }
});

但是我在以下方法的javascript中得到一个异常,看起来self.ariaTarget是未定义的,导致启动elm.setAttribute的行失败,因为elm为null.
我不明白我做错了什么.

/**
* Sets the specified aria property.
 *
 * @method aria
 * @param {String} name Name of the aria property to set.
 * @param {String} value Value of the aria property.
 * @return {tinymce.ui.Control} Current control instance.
 */
aria: function(name,value) {
    var self = this,elm = self.getEl(self.ariaTarget);
        if (typeof value === "undefined") {
        return self._aria[name];
    } else {
        self._aria[name] = value;
    }
        if (self._rendered) {
        elm.setAttribute(name == 'role' ? name : 'aria-' + name,value);
    }
        return self;
},

谢谢您的帮助.
标记

编辑:
我一直在关注这个jsfiddle http://jsfiddle.net/thomi_ch/m0aLmh3n/19/而不是在文档中加载tinymce,它在初始化时从URL加载它(见下文).我已将我的代码更改为使用相同的script_url作为示例,它可以渲染编辑器(缺少图标等,因为css无法找到)但这对我来说意味着我的tinymce.jquery版本有问题.js文件.

$('textarea').tinymce({
    script_url : 'http://demo.nilooma.com/system/plugins/tinymce/4.1.6/tiny_mce/tinymce.gzip.PHP',toolbar: 'link',plugins: 'link',forced_root_block : '',init_instance_callback: function(editor) {
        console.log('tinymce init: '+editor.id);
    }
});

我试过了tinymce.jquery.js&来自4.1.9版本的tinymce.js& 4.1.6正如jsfiddle所使用的那样,所有组合都给出了同样的错误.
是否可能与另一个库不兼容?

解决方法

我找到了解决这个问题的方法.我相信它是由于尝试多次初始化元素引起的,之后我还发现了一个缺陷,即元素没有显示编辑器,因为它在被隐藏时被初始化.

我用来初始化bootstrap模式的代码就是这个;

$("#myModal").modal({
    keyboard: true
},"show");

//Bind open
$("#myModal").on("show.bs.modal",function () {
    $(document).trigger("DialogLoaded");
});
//Bind close
$("#myModal").on("hidden.bs.modal",function () {
    $(document).trigger("DialogClosed");
});

然后我听听文件上的事件;

tinyMCE.init({
    // General options
    mode: "textareas",init_instance_callback: function(editor) {
        console.log("tinymce init: " + editor.id);
    }
});

$(document).on("DialogLoaded",function () {
    var textAreas = $("textarea",$("#myModal"));
    for (var i = 0; i < textAreas.length; i++) {
        //Check if element already has editor enabled
        if (tinymce.get(textAreas[i].id)) {
            //Remove existing editor
            tinyMCE.execCommand("mceRemoveEditor",false,textAreas[i].id);
        }

        //Add editor
        tinyMCE.execCommand("mceAddEditor",textAreas[i].id);
    }
});

$(document).on("DialogClosed",function () {
    //Remove all editors in dialog
    var textAreas = $("textarea",$("#myModal"));
    for (var i = 0; i < textAreas.length; i++) {
        //Check if element already has editor enabled
        if (tinymce.get(textAreas[i].id))
            tinyMCE.execCommand("mceRemoveEditor",textAreas[i].id);
    }
});

我想有几点需要记住;

>仅在可见元素上加载tinyMCE
>首先初始化tinyMCE
>确保仅加载每个元素一次
>确保每个textarea都有一个唯一的ID(并在隐藏后将其删除)

我希望这有助于其他人与TinyMCE有任何问题.

谢谢,标记.

javascript – TinyMCE – >无法读取null的属性’setAttribute’的更多相关文章

  1. three.js模拟实现太阳系行星体系功能

    这篇文章主要介绍了three.js模拟实现太阳系行星体系功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

  2. HTML5页面无缝闪开的问题及解决方案

    这篇文章主要介绍了HTML5页面无缝闪开方案,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  3. ios – 为什么,将nil作为参数从Objc C发送到swift类初始化器,用新对象替换nil参数

    除非属性本身被声明为nonnull:

  4. ios – 在Swift中对MKCircle进行子类化

    我想通过添加另一个String属性来继承MKCircle,我们称之为“代码”.这个属性不是可选的和常量的,所以我必须从初始化器设置它,对吧?有没有办法定义一个单一的便利初始化器,在这种情况下需要3个参数?本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  5. ios – AVAudioPlayer不再使用Swift 2.0/Xcode 7 beta

    对于我的iPhone应用程序中的vartestAudio声明,我在这里收到错误“调用可以抛出,但错误不能从属性初始化程序中抛出”当我转到Xcode7测试版时,就发生了这种情况.如何在Swift2.0中使用此音频剪辑?

  6. ios – 斯威夫特.在初始化所有存储的属性之前在方法调用中使用’self’

    解决方法在初始化所有非可选实例变量之前,您无法在self上调用方法.有几种方法可以解决这个问题.>将属性更改为选项或隐式解包选项(不建议)>使buildCircle()方法静态或只是一个在文件中运行并为所有圆圈调用addSubview()在所有属性初始化并且您调用之后super.init()等等.你必须避免在自己之前打电话给自己class已初始化.

  7. ios – Objective-C警告未找到超类“-init”的指定的初始化程序的方法覆盖

    我在一个应用程序中清理警告,我收到了两次这个警告对于这行代码和这一行我相当新的Objective-C和谷歌这个警告,只是不明白的解决方案我的问题是如何摆脱这些警告?

  8. ios – UICollectionView不能使用UISearchController?

    在WWDC2014年的“AInsideInsidePresentationControllers”中,演示者展示了如何在UITableView中设置UISearchController.他们通过设置searchController的searchBar框架,然后将其设置为tableView的tableHeaderView来实现.不幸的是,UICollectionView没有相当于tableHeade

  9. ios7 – 如何使用默认的IOS映像

    嗨,我是IOS开发的新手.我知道如何在IOS应用程序中使用图像.但是我不知道如何使用默认图像,如开发者站点中提到的共享或书签图标.我想用它们我必须下载这些图像集或那些可用在xcode?

  10. ios – 在词典上引用成员’subscript’

    我正在尝试为类创建一个可用的初始化程序.我的类将使用来自网络请求的输入进行初始化.网络不可靠,我想创建一个初始化器,检查所有属性上的存在,否则它将失败.我试图在这里使用守卫,所以请随时指出方法中的任何明显的错误:守卫self.jobId行无法编译,错误:对成员’下标’的模糊引用关于如何纠正这个错误的任何想法?

随机推荐

  1. js中‘!.’是什么意思

  2. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  3. 基于JavaScript编写一个图片转PDF转换器

    本文为大家介绍了一个简单的 JavaScript 项目,可以将图片转换为 PDF 文件。你可以从本地选择任何一张图片,只需点击一下即可将其转换为 PDF 文件,感兴趣的可以动手尝试一下

  4. jquery点赞功能实现代码 点个赞吧!

    点赞功能很多地方都会出现,如何实现爱心点赞功能,这篇文章主要为大家详细介绍了jquery点赞功能实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. AngularJs上传前预览图片的实例代码

    使用AngularJs进行开发,在项目中,经常会遇到上传图片后,需在一旁预览图片内容,怎么实现这样的功能呢?今天小编给大家分享AugularJs上传前预览图片的实现代码,需要的朋友参考下吧

  6. JavaScript面向对象编程入门教程

    这篇文章主要介绍了JavaScript面向对象编程的相关概念,例如类、对象、属性、方法等面向对象的术语,并以实例讲解各种术语的使用,非常好的一篇面向对象入门教程,其它语言也可以参考哦

  7. jQuery中的通配符选择器使用总结

    通配符在控制input标签时相当好用,这里简单进行了jQuery中的通配符选择器使用总结,需要的朋友可以参考下

  8. javascript 动态调整图片尺寸实现代码

    在自己的网站上更新文章时一个比较常见的问题是:文章插图太宽,使整个网页都变形了。如果对每个插图都先进行缩放再插入的话,太麻烦了。

  9. jquery ajaxfileupload异步上传插件

    这篇文章主要为大家详细介绍了jquery ajaxfileupload异步上传插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. React学习之受控组件与数据共享实例分析

    这篇文章主要介绍了React学习之受控组件与数据共享,结合实例形式分析了React受控组件与组件间数据共享相关原理与使用技巧,需要的朋友可以参考下

返回
顶部