ueditor解决超链接、预览无效问题

摘要:
(function(){varparent=window.parent;//当前打开的对话框的编辑器实例editor=dialog.editor;browser=UE.browser;//当前已打开的对话框编辑器实例editor=dialog.eeditor;UE=parent.UE;$G=function(id){returndocument.getElementById(id)};

最近在某项目中引用了ueditor,并没有注意到除了文本编辑与上传图片以外的功能是否完好。后面测试提了俩bug,发现超链接与预览无效的问题,业务需求确实需要这俩功能,还是得解决。

在点击超链接或预览按钮的时候,发现控制台报错:Uncaught ReferenceError: editor is not undefined at link.html,大致就是link里面引用的所有变量都Undefined。

于是博主打开link.html文件,发现头部调用了internal.js,那该页面引用的所有变量应该也在这个文件声明了。

(function () {
    var parent = window.parent;
    //dialog对象
    dialog = parent.$EDITORUI[window.frameElement.id.replace( /_iframe$/, '' )];
    //当前打开dialog的编辑器实例
    editor = dialog.editor;

    UE = parent.UE;

    domUtils = UE.dom.domUtils;

    utils = UE.utils;

    browser = UE.browser;

    ajax = UE.ajax;

    $G = function ( id ) {
        return document.getElementById( id )
    };
    //focus元素
    $focus = function ( node ) {
        setTimeout( function () {
            if ( browser.ie ) {
                var r = node.createTextRange();
                r.collapse( false );
                r.select();
            } else {
                node.focus()
            }
        }, 0 )
    };
    ...省略

})();

$(function(){...})()虽然能够立即执行,但是里面的变量在外面是获取不到的,所以博主把这层直接去掉。

var parent = window.parent;
//dialog对象
dialog = parent.$EDITORUI[window.frameElement.id.replace( /_iframe$/, '' )];
//当前打开dialog的编辑器实例
editor = dialog.editor;

UE = parent.UE;

domUtils = UE.dom.domUtils;

utils = UE.utils;

browser = UE.browser;

ajax = UE.ajax;

$G = function ( id ) {
    return document.getElementById( id )
};
//focus元素
$focus = function ( node ) {
    setTimeout( function () {
        if ( browser.ie ) {
            var r = node.createTextRange();
            r.collapse( false );
            r.select();
        } else {
            node.focus()
        }
    }, 0 )
};
...省略

改掉之后看到超链接和预览都可以了,但是打开ie一看,咦,怎么回事,你咋不行呢。。。再次看控制台一堆变量无法定义。。。

又一层层找,遂又发现上面代码行声明的 var parent = window.parent;  parent是undefined,,第一行都不行,下面这些变量肯定全找不着了。

最后试着把window.parent改成window.top,惊喜的发现竟然可以了。

var parent = window.top;
//dialog对象
dialog = parent.$EDITORUI[window.frameElement.id.replace( /_iframe$/, '' )];
//当前打开dialog的编辑器实例
editor = dialog.editor;

UE = parent.UE;

domUtils = UE.dom.domUtils;

utils = UE.utils;

browser = UE.browser;

ajax = UE.ajax;

$G = function ( id ) {
    return document.getElementById( id )
};
//focus元素
$focus = function ( node ) {
    setTimeout( function () {
        if ( browser.ie ) {
            var r = node.createTextRange();
            r.collapse( false );
            r.select();
        } else {
            node.focus()
        }
    }, 0 )
};
...省略

完结,撒花!

免责声明:文章转载自《ueditor解决超链接、预览无效问题》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C#中的多线程Traefik-v2.x快速入门下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

go基础9-并发

并发 并发机制,多goroutine间的共享变量,并发问题的分析手段,解决模式,goroutine和线程区别 竞争条件 并发:无法判断多个事件执行的顺序的情形;并发安全:函数,方法,类型在线性执行或并发执行时,都能正确的返回结果;包级别的导出函数一般都是并发安全的.因为只要让变量不在多个goroutine内共享,它就一定是并发安全的;但是如果存在共享变量,...

grafana配置告警

首先,进入grafana控制面板,选择需要监控指标的区域,然后点击编辑 此时进入Alert页面会发现提示 Template variables are not supported in alert queries 这是因为json文件中有一些变量,而变量是无法用来作为alert的指标的。 将变量替换为具体的值 替换后的结果如下 然后新增Notificati...

Windows的Java_HOME环境变更配置

Windows的Java_HOME环境变更配置 一般会配置三个环境变更: 1、系统变量 变量名JAVA_HOME  变量值=安装目录,如:C:Program Files (x86)Javajdk1.7.0_40 2、Path系统变量,编辑,在原来变量值最后处加上:;%JAVA_HOME%in;%JAVA_HOME%jrein; 3、系统变量CLASSPAT...

位域简介

位域简介 有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域, 并说明每个区域的位数。每个域有一个域名,可以在程序中按域名进行...

Vue中的computed属性

参考:https://www.cnblogs.com/gunelark/p/8492468.html 看了网上很多资料,对vue的computed讲解自己看的都不是很清晰,今天忙里抽闲,和同事们又闲聊起来,对computed这个属性才有了一个稍微比较清晰的认识,下面的文章有一部分是转自: https://www.w3cplus.com/vue/vue-c...

activiti学习总结

Activiti界面元素的使用总结 一、图形设计中元素的使用 1、SequenceFlow:连接线,可以连接两个任务,来管理流程实例的流向 -----General -----id:流程的id,用与程序内部识别 -----name流程的名字,用于用户显示识别 -----Main config -----Label width:组件的大小,自动 -----C...