当前位置:   article > 正文

Ueditor表格增加自定义表格宽度功能_ueditor中table默认自带width配置

ueditor中table默认自带width配置

之前有用户提到Ueditor的表格,不能设置表格的宽度,所以自定义预览页面的时候,导致表格不是自己想要的样式。所以简单了做了个功能,使用户可以做简单的更改。

1. 找到dialogs/table文件夹,修改edittable.html文件,在

  1. <li>
  2. <label><input type="radio" id="J_autoSizePage" name="size" /><var id="lang_autoSizePage"></var></label>
  3. </li>

下面添加代码

  1. <!--设置自定义宽度 start-->
  2. <li>
  3. <label><input type="radio" id="J_setSizePage" name="size" />自定义页面宽度</label>
  4. </li>
  5. <li>
  6. <input id="J_setText" type="text" style="display:none;width:60px;" value="40%" onchange="SetText(this)"/>
  7. </li>
  8. <!--end-->

2. 找到dialogs/table文件夹,修改edittable.js文件,

a.在autoSizePage = $G("J_autoSizePage"),下面增加代码

  1. setSizePage = $G("J_setSizePage"),//设置自定义宽度
  2. setSizeText = $G("J_setText"),//设置自定义宽度

b.在domUtils.on(autoSizePage, "click", me.autoSizePageHanler);下面增加代码

domUtils.on(setSizePage, "click", me.setSizePageHanler);//设置自定义宽度 

c.autoSizeContentHanler、autoSizePageHanler都增加一句代码

  1. var txtSize = $G("J_setText");
  2. txtSize.style.display = "none";

d. 在autoSizePageHanler后面增加一段代码

  1. setSizePageHanler: function () { //设置自定义宽度
  2. var example = $G("J_example");
  3. var txtSize = $G("J_setText");
  4. txtSize.style.display = "block";
  5. var tds = example.getElementsByTagName(example, "td");
  6. utils.each(tds, function (td) {
  7. td.removeAttribute("width");
  8. });
  9. example.setAttribute('width', txtSize.value);
  10. },

e. 找到dialog.onok事件,在    editor.execCommand("edittable", tone.value);上面加一段代码

  1. //设置自定义宽度
  2. if (setSizePage.checked) {
  3. editor.execCommand("settablesize", setSizeText.value);
  4. }

3. 修改ueditor.all.js文件,

a.搜索UE.commands['edittable'],大概在19676行,注释为"//表格属性",在执行方法后面再新建一个方法,代码如下

  1. //表格属性 宽度设置
  2. UE.commands['settablesize'] = {
  3. queryCommandState: function () {
  4. return getTableItemsByRange(this).table ? 0 : -1
  5. },
  6. execCommand: function (cmd, width) {
  7. var rng = this.selection.getRange(),
  8. table = domUtils.findParentByTagName(rng.startContainer, 'table');
  9. if (table) {
  10. table.width = width;
  11. }
  12. }
  13. };

b. 搜索UE.commands["adaptbytext"],大概在19459行,修改方法,代码如下

  1. //修改表格属性 宽度设置
  2. UE.commands["adaptbytext"] =
  3. UE.commands["adaptbywindow"] = {
  4. queryCommandState: function () {
  5. return getTableItemsByRange(this).table ? 0 : -1
  6. },
  7. execCommand: function (cmd) {
  8. var tableItems = getTableItemsByRange(this),
  9. table = tableItems.table;
  10. if (table) {
  11. if (cmd == 'adaptbywindow') {
  12. table.removeAttribute("width");
  13. resetTdWidth(table, this);
  14. } else {
  15. var cells = domUtils.getElementsByTagName(table, "td th");
  16. utils.each(cells, function (cell) {
  17. cell.removeAttribute("width");
  18. });
  19. table.removeAttribute("width");
  20. table.width = "100%";
  21. }
  22. }
  23. }
  24. };

修改完成后,效果图如下:

 

 

这个是简单的修改方式,可做进一步优化,替换成下拉框的方式也可以,而且现在不能进行数据的反绑,是一个问题,以上单元格属性、表格属性都可以扩展。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读