148 lines
6.2 KiB
PHP
148 lines
6.2 KiB
PHP
![]() |
/**
|
|||
|
* UEEditor完整配置项
|
|||
|
*/
|
|||
|
|
|||
|
(function () {
|
|||
|
var URL = window.UEDITOR_HOME_URL || getUEBasePath();
|
|||
|
/**
|
|||
|
* 配置项主体。注意,此处所有涉及到路径的配置别遗漏URL变量。
|
|||
|
*/
|
|||
|
window.UEDITOR_CONFIG = {
|
|||
|
//宽度调为100%
|
|||
|
initialFrameWidth: '100%',
|
|||
|
//为编辑器实例添加一个路径,这个不能被注释
|
|||
|
UEDITOR_HOME_URL: URL
|
|||
|
// 服务器统一请求接口路径
|
|||
|
, serverUrl: URL + ""
|
|||
|
//工具栏上的所有的功能按钮和下拉框,可以在new编辑器的实例时选择自己需要的重新定义
|
|||
|
, toolbars: [[
|
|||
|
'fullscreen', 'source', '|', 'undo', 'redo', '|',
|
|||
|
'bold', 'italic', 'underline', 'fontborder', 'strikethrough', 'superscript', 'subscript', 'removeformat', 'formatmatch', 'autotypeset', 'blockquote', 'pasteplain', '|', 'forecolor', 'backcolor', 'insertorderedlist', 'insertunorderedlist', 'selectall', 'cleardoc', '|',
|
|||
|
'rowspacingtop', 'rowspacingbottom', 'lineheight', '|',
|
|||
|
'customstyle', 'paragraph', 'fontfamily', 'fontsize', '|',
|
|||
|
'directionalityltr', 'directionalityrtl', 'indent', '|',
|
|||
|
'justifyleft', 'justifycenter', 'justifyright', 'justifyjustify', '|', 'touppercase', 'tolowercase', '|',
|
|||
|
'link', 'unlink', 'anchor', '|', 'imagenone', 'imageleft', 'imageright', 'imagecenter', '|',
|
|||
|
'simpleupload', 'insertimage', 'emotion', 'scrawl', 'insertvideo', 'attachment', 'map', 'gmap', 'insertframe', 'insertcode', 'pagebreak', 'template', 'background', '|',
|
|||
|
'horizontal', 'date', 'time', 'spechars', 'wordimage', '|',
|
|||
|
'inserttable', 'deletetable', 'insertparagraphbeforetable', 'insertrow', 'deleterow', 'insertcol', 'deletecol', 'mergecells', 'mergeright', 'mergedown', 'splittocells', 'splittorows', 'splittocols', 'charts', '|',
|
|||
|
'print', 'preview', 'searchreplace', 'drafts'
|
|||
|
]]
|
|||
|
|
|||
|
, zIndex: 8
|
|||
|
// xss 过滤是否开启,inserthtml等操作
|
|||
|
, xssFilterRules: true
|
|||
|
//input xss过滤
|
|||
|
, inputXssFilter: true
|
|||
|
//output xss过滤
|
|||
|
, outputXssFilter: true
|
|||
|
// xss过滤白名单 名单来源: https://raw.githubusercontent.com/leizongmin/js-xss/master/lib/default.js
|
|||
|
, whitList: {
|
|||
|
a: ['target', 'href', 'title', 'class', 'style'],
|
|||
|
abbr: ['title', 'class', 'style'],
|
|||
|
address: ['class', 'style'],
|
|||
|
area: ['shape', 'coords', 'href', 'alt'],
|
|||
|
article: [],
|
|||
|
aside: [],
|
|||
|
audio: ['autoplay', 'controls', 'loop', 'preload', 'src', 'class', 'style'],
|
|||
|
b: ['class', 'style'],
|
|||
|
bdi: ['dir'],
|
|||
|
bdo: ['dir'],
|
|||
|
big: [],
|
|||
|
blockquote: ['cite', 'class', 'style'],
|
|||
|
br: [],
|
|||
|
caption: ['class', 'style'],
|
|||
|
center: [],
|
|||
|
cite: [],
|
|||
|
code: ['class', 'style'],
|
|||
|
col: ['align', 'valign', 'span', 'width', 'class', 'style'],
|
|||
|
colgroup: ['align', 'valign', 'span', 'width', 'class', 'style'],
|
|||
|
dd: ['class', 'style'],
|
|||
|
del: ['datetime'],
|
|||
|
details: ['open'],
|
|||
|
div: ['class', 'style'],
|
|||
|
dl: ['class', 'style'],
|
|||
|
dt: ['class', 'style'],
|
|||
|
em: ['class', 'style'],
|
|||
|
font: ['color', 'size', 'face'],
|
|||
|
footer: [],
|
|||
|
h1: ['class', 'style'],
|
|||
|
h2: ['class', 'style'],
|
|||
|
h3: ['class', 'style'],
|
|||
|
h4: ['class', 'style'],
|
|||
|
h5: ['class', 'style'],
|
|||
|
h6: ['class', 'style'],
|
|||
|
header: [],
|
|||
|
hr: [],
|
|||
|
i: ['class', 'style'],
|
|||
|
img: ['src', 'alt', 'title', 'width', 'height', 'id', '_src', 'loadingclass', 'class', 'data-latex'],
|
|||
|
ins: ['datetime'],
|
|||
|
li: ['class', 'style'],
|
|||
|
mark: [],
|
|||
|
nav: [],
|
|||
|
ol: ['class', 'style'],
|
|||
|
p: ['class', 'style'],
|
|||
|
pre: ['class', 'style'],
|
|||
|
s: [],
|
|||
|
section: [],
|
|||
|
small: [],
|
|||
|
span: ['class', 'style'],
|
|||
|
sub: ['class', 'style'],
|
|||
|
sup: ['class', 'style'],
|
|||
|
strong: ['class', 'style'],
|
|||
|
table: ['width', 'border', 'align', 'valign', 'class', 'style'],
|
|||
|
tbody: ['align', 'valign', 'class', 'style'],
|
|||
|
td: ['width', 'rowspan', 'colspan', 'align', 'valign', 'class', 'style'],
|
|||
|
tfoot: ['align', 'valign', 'class', 'style'],
|
|||
|
th: ['width', 'rowspan', 'colspan', 'align', 'valign', 'class', 'style'],
|
|||
|
thead: ['align', 'valign', 'class', 'style'],
|
|||
|
tr: ['rowspan', 'align', 'valign', 'class', 'style'],
|
|||
|
tt: [],
|
|||
|
u: [],
|
|||
|
ul: ['class', 'style'],
|
|||
|
video: ['autoplay', 'controls', 'loop', 'preload', 'src', 'height', 'width', 'class', 'style']
|
|||
|
}
|
|||
|
};
|
|||
|
|
|||
|
function getUEBasePath(docUrl, confUrl) {
|
|||
|
return getBasePath(docUrl || self.document.URL || self.location.href, confUrl || getConfigFilePath());
|
|||
|
}
|
|||
|
|
|||
|
function getConfigFilePath() {
|
|||
|
var configPath = document.getElementsByTagName('script');
|
|||
|
return configPath[configPath.length - 1].src;
|
|||
|
}
|
|||
|
|
|||
|
function getBasePath(docUrl, confUrl) {
|
|||
|
var basePath = confUrl;
|
|||
|
if (/^(\/|\\\\)/.test(confUrl)) {
|
|||
|
basePath = /^.+?\w(\/|\\\\)/.exec(docUrl)[0] + confUrl.replace(/^(\/|\\\\)/, '');
|
|||
|
} else if (!/^[a-z]+:/i.test(confUrl)) {
|
|||
|
docUrl = docUrl.split("#")[0].split("?")[0].replace(/[^\\\/]+$/, '');
|
|||
|
basePath = docUrl + "" + confUrl;
|
|||
|
}
|
|||
|
return optimizationPath(basePath);
|
|||
|
}
|
|||
|
|
|||
|
function optimizationPath(path) {
|
|||
|
var protocol = /^[a-z]+:\/\//.exec(path)[0],
|
|||
|
tmp = null,
|
|||
|
res = [];
|
|||
|
path = path.replace(protocol, "").split("?")[0].split("#")[0];
|
|||
|
path = path.replace(/\\/g, '/').split(/\//);
|
|||
|
path[path.length - 1] = "";
|
|||
|
while (path.length) {
|
|||
|
if ((tmp = path.shift()) === "..") {
|
|||
|
res.pop();
|
|||
|
} else if (tmp !== ".") {
|
|||
|
res.push(tmp);
|
|||
|
}
|
|||
|
}
|
|||
|
return protocol + res.join("/");
|
|||
|
}
|
|||
|
|
|||
|
window.UE = {
|
|||
|
getUEBasePath: getUEBasePath
|
|||
|
};
|
|||
|
})();
|