admin管理员组文章数量:1579923
tinymce.init()浏览器兼容问题
tinymce是一个富文本控件
问题一:在低版本谷歌浏览器等,会出现找不到 window.Promise.allSettled 方法的问题。
这里使用手动添加 allSettled方法 进行处理
这里还遇到另一个问题,
问题二:tinymce.init()方法是 异步 的。在未初始化设置值,会出现setContent方法找不到问题。
本想使用回调函数解决问题二,结果网上未找到能用的回调函数。
测试 init_instance_callback : “hidetinymce” 参数不可用
最终使用setTimeout(“setTinymce()”,300); 延时执行来解决的。
$(function () {
setPromiseAllSettled();
})
/**
* 兼容低版本浏览器处理
*/
function setPromiseAllSettled() {
var browserName = navigator.userAgent.toLowerCase();
if (/chrome/i.test(browserName) && /webkit/i.test(browserName) && /mozilla/i.test(browserName)) {
window.Promise.allSettled = function(values){
function isPromise(x){
if((typeof x==='object' && x!=null) || typeof x==='function'){
if(typeof x.then =='function'){
return true;
}
}
return false;
}
return new Promise((resolve,reject)=>{
let arr = [];//收集传入的项运行结果
let times =0;//调用的次数和传入的参数个数一致的时候,resolve
function collectResult(val,key,obj){
arr[key] = obj;
if(++times === values.length){
resolve(arr)
}
}
for(let i=0;i<values.length;i++){
let value = values[i];
if(value&&isPromise(value)){
value.then((y)=>{
let obj = {status:"fulfilled",value:y}
collectResult(y,i,obj)
},(err)=>{
let obj = {status:"rejected",reason:err}
collectResult(err,i,obj)
})
}else{
let obj = {status:"fulfilled",value:value}
collectResult(value,i,obj)
}
}
})
}
}
//初始化tinymce控件
tinymce.init({
selector: '#tinymce',
menubar:false,
statusbar:false,
toolbar:false,
language: 'zh-Hans'
});
}
/**
*初始化完成之后设置值
*/
function setTinymce(inst) {
$("#tinymce").html(loadData);
tinymce.activeEditor.setContent(loadData);
}
function SetData(data) {
...
setTimeout("setTinymce()",300);
...
}
版权声明:本文标题:tinymce.init()浏览器兼容问题 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1727864743a1134323.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论