百度UEditor粘貼或插入的表格不顯示邊框的解決辦法


這個方法是我自己研究出來的。

編輯器里面可以看到表格有邊框,在前台頁面展示出來的卻沒有邊框。

 

修改辦法:

打開ueditor.all.js

1、找到下面的代碼,修改

[javascript]  view plain copy 在CODE上查看代碼片派生到我的代碼片
  1. utils.each(tables, function (table) {  
  2.     removeStyleSize(table, true);  
  3.     domUtils.removeAttributes(table, ['style']); //改這里,原來是 ['style', 'border']  
  4.     utils.each(domUtils.getElementsByTagName(table, "td"), function (td) {  
  5.         if (isEmptyBlock(td)) {  
  6.             domUtils.fillNode(me.document, td);  
  7.         }  
  8.         removeStyleSize(td, true);  
  9.     });  
  10. });  

這是為了不讓UEditor去掉粘貼的表格的邊框,也就是table元素的border屬性(不是border內聯樣式)

 

 

2、UEditor插入的表格實際是沒有邊框的,編輯器中看到邊框,其實是因為編輯器里面(<iframe>中)有下面這個全局css

[css]  view plain copy 在CODE上查看代碼片派生到我的代碼片
  1. td,th{ border:1px solid #DDD; }  

但是前台展示是沒有這段全局css的,所以導致看不到邊框。

 

我們可以讓編輯器中無邊框的表格,顯示成虛線灰色的邊框,這也是其他很多html編輯器的處理方式。

找到並修改下面的代碼

[css]  view plain copy 在CODE上查看代碼片派生到我的代碼片
  1. utils.cssRule('table',  
  2.             //選中的td上的樣式  
  3.             '.selectTdClass{background-color:#edf5fa !important}' +  
  4.                 'table.noBorderTable td,table.noBorderTable th,table.noBorderTable caption{border:1px dashed #ddd !important}' +  
  5.                 //插入的表格的默認樣式  
  6.                 'table{margin-bottom:10px;border-collapse:collapse;display:table;}' +  
  7.                 'td,th{padding: 5px 10px;border: 1px dashed #DDD;}' + //這里修改 1px solid #DDD 為 1px dashed #DDD  
  8.                 'caption{border:1px dashed #DDD;border-bottom:0;padding:3px;text-align:center;}' +  
  9.                 'th{border-top:1px dashed #BBB;background-color:#F7F7F7;}' + //這里修改 1px solid #BBB 為 1px dashed #BBB  
  10.                 'table tr.firstRow th{border-top-width:2px;}' +  
  11.                 '.ue-table-interlace-color-single{ background-color: #fcfcfc; } .ue-table-interlace-color-double{ background-color: #f7faff; }' +  
  12.                 'td p{margin:0;padding:0;}', me.document);  

目的是讓全局的td/th邊框樣式顯示為灰色虛線

 

 

3、最后就是table上右鍵菜單中有個"表格-設置表格邊線可見"的功能。這個功能會讓表格顯示出實線邊框,實際前台展示也是有邊框的。

現在td是有實線邊框的,可是th卻還是虛線,所以要改下面的代碼,增加一段對th的處理

注意:th就是表格標題列/行。可以用右鍵菜單"表格-插入表格標題列/行"插入th

[javascript]  view plain copy 在CODE上查看代碼片派生到我的代碼片
  1. execCommand: function () {  
  2.     var table = getTableItemsByRange(this).table;  
  3.     utils.each(domUtils.getElementsByTagName(table,'td'),function(td){  
  4.         td.style.borderWidth = '1px';  
  5.         td.style.borderStyle = 'solid';  
  6.         td.style.borderColor = 'windowtext';  
  7.     });  
  8.     //增加下面一段  
  9.     utils.each(domUtils.getElementsByTagName(table,'th'),function(th){  
  10.         th.style.borderWidth = domUtils.getComputedStyle(th, "border-width");  
  11.         th.style.borderStyle = 'solid';  
  12.         th.style.borderColor = 'windowtext';  
  13.     });  
  14. }  


最后如果你用的是ueditor.all.min.js,需要將改過的代碼壓縮一份min版本。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM