contextmenu.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311
  1. ///**
  2. // * Created by JetBrains PhpStorm.
  3. // * User: dongyancen
  4. // * Date: 12-9-19
  5. // * Time: 下午4:19
  6. // * To change this template use File | Settings | File Templates.
  7. // */
  8. module('plugins.contextmenu');
  9. //test('stop', function () {stop();});
  10. test('基本右键菜单', function () {
  11. var editor = te.obj[0];
  12. stop();
  13. ua.contextmenu(editor.body);
  14. var lang = editor.getLang("contextMenu");
  15. equal(document.getElementsByClassName("edui-menu-body").length, 3, '默认3个menu,一个主的,一个段落格式,一个表格');
  16. var menuBody = document.getElementsByClassName("edui-menu-body")[0];
  17. equal(menuBody.parentNode.parentNode.parentNode.style.display, '', '第一个menu显示');
  18. equal(menuBody.childNodes.length, 11, '第一个menu8个items3个分隔线');
  19. // var space = browser.webkit||ua.browser.ie==9?"\n":'';
  20. var innerText = lang['selectall'] + lang.cleardoc + lang.paragraph + lang.table + lang.insertparagraphbefore + lang.insertparagraphafter + lang['copy'] + lang['paste'];
  21. if (browser.gecko) {
  22. equal(menuBody.textContent, innerText, '检查menu显示的字符');
  23. }
  24. else {
  25. equal(menuBody.innerText.replace(/[\r\n\t\u200b\ufeff]/g, ''), innerText, '检查menu显示的字符');
  26. }
  27. ok(menuBody.childNodes[0].className.indexOf("edui-for-selectall") > -1, '检查menu样式');
  28. var menuparagraphBody = document.getElementsByClassName("edui-menu-body")[1];
  29. equal(menuparagraphBody.parentNode.parentNode.parentNode.style.display, 'none', '第二个menu隐藏');
  30. var menutableBody = document.getElementsByClassName("edui-menu-body")[2];
  31. if (ua.browser.ie) {
  32. ua.mouseenter(menuBody.childNodes[3]);
  33. } else {
  34. ua.mouseover(menuBody.childNodes[3]);
  35. }
  36. setTimeout(function () {
  37. lang = editor.getLang("contextMenu");
  38. equal(menuparagraphBody.parentNode.parentNode.parentNode.style.display, 'none', '显示submenu,检查submenu的display值:""');
  39. equal(menuparagraphBody.childNodes.length, 4, '检查submenu的menuitems数量');
  40. equal(menutableBody.parentNode.parentNode.parentNode.style.display, 'none', '显示table submenu,检查submenu的display值:""');
  41. /*trace 3038*/
  42. if (ua.browser.ie && ua.browser.ie < 9) {
  43. equal(menutableBody.childNodes.length, 2, 'ie有一条分隔线');
  44. } else {
  45. equal(menutableBody.childNodes.length, 1, '只有插入表格选项');
  46. }
  47. innerText = lang["justifyleft" ] + lang["justifyright" ] + lang["justifycenter" ] + lang[ "justifyjustify" ];
  48. if (browser.gecko) {
  49. equal(menuparagraphBody.textContent, innerText, '检查menu显示的字符');
  50. equal(menutableBody.textContent, lang["inserttable" ], '检查table menu显示的字符');
  51. }
  52. else {
  53. equal(menuparagraphBody.innerText.replace(/[\r\n\t\u200b\ufeff]/g, ''), innerText, '检查menu显示的字符');
  54. equal(menutableBody.innerText.replace(/[\r\n\t\u200b\ufeff]/g, ''), lang["inserttable" ], '检查table menu显示的字符');
  55. }
  56. ua.click(menuparagraphBody.childNodes[1]);
  57. setTimeout(function () {
  58. equal(editor.body.firstChild.style.textAlign, 'right', '文本右对齐');
  59. document.getElementById('edui_fixedlayer').parentNode.removeChild(document.getElementById('edui_fixedlayer'));
  60. te.dom.push(editor.container);
  61. start();
  62. }, 500);
  63. }, 200);
  64. });
  65. test('表格右键菜单', function () {
  66. var editor = te.obj[0];
  67. var range = te.obj[1];
  68. stop();
  69. var lang = editor.getLang("contextMenu");
  70. editor.setContent('<table width="100%" border="1" bordercolor="#000000"><tbody><tr><td style="width:50%;"><br /></td><td style="width:50%;"><br /></td></tr><tr><td style="width:50%;"></td><td style="width:50%;"><br /></td></tr></tbody></table>');
  71. setTimeout(function () {
  72. range.setStart(editor.body.firstChild.firstChild.firstChild.firstChild.firstChild, 0).collapse(true).select();
  73. ua.contextmenu(editor.body.firstChild.firstChild.firstChild);
  74. // 点开右键菜单
  75. equal(document.getElementsByClassName("edui-menu-body").length, 5, '获得edui-menu-body名称的class个数5');
  76. var menuBody = document.getElementsByClassName("edui-menu-body")[0];
  77. equal(menuBody.childNodes.length, 13, '第一个menu11个items2个分隔线');
  78. var innerText = lang.selectall + lang.cleardoc + lang.table + lang.tablesort + lang.borderbk+ lang.aligntd + lang.aligntable + lang.insertparagraphbefore + lang.insertparagraphafter + lang['copy'] + lang['paste'];
  79. if (browser.gecko) {
  80. equal(menuBody.textContent, innerText, '检查menu显示的字符');
  81. }
  82. else {
  83. equal(menuBody.innerText.replace(/[\r\n\t\u200b\ufeff]/g, ''), innerText, '检查menu显示的字符');
  84. }
  85. var menutableBody = document.getElementsByClassName("edui-menu-body")[1];
  86. var forTable = document.getElementsByClassName('edui-for-table');
  87. //点开'表格'子菜单
  88. if (ua.browser.ie) {
  89. ua.mouseenter(forTable[forTable.length - 1]);
  90. } else {
  91. ua.mouseover(forTable[forTable.length - 1]);
  92. }
  93. setTimeout(function () {
  94. lang = editor.getLang("contextMenu");
  95. equal(menutableBody.parentNode.parentNode.parentNode.style.display, 'none', '显示submenu,检查submenu的display值:""');
  96. equal(menutableBody.childNodes.length, 19, '14个items5个分隔线');
  97. var innerText = lang.deletetable + lang.deleterow + lang.deletecol+ lang.insertcol + lang.insertcolnext + lang.insertrow + lang.insertrownext + lang.insertcaption + lang.inserttitle + lang.inserttitlecol + lang.mergeright + lang.mergedown + lang.edittd + lang.edittable+lang.setbordervisible;
  98. if (browser.gecko) {
  99. equal(menutableBody.textContent, innerText, '检查menu显示的字符');
  100. }
  101. else {
  102. equal(menutableBody.innerText.replace(/[\r\n\t\u200b\ufeff]/g, ''), innerText, '检查menu显示的字符');
  103. }
  104. ua.click(menutableBody.childNodes[0]);
  105. equal(editor.body.getElementsByTagName('table').length, 0, '删除表格');
  106. setTimeout(function () {
  107. document.getElementById('edui_fixedlayer').parentNode.removeChild(document.getElementById('edui_fixedlayer'));
  108. te.dom.push(editor.container);
  109. start();
  110. }, 200);
  111. }, 200);
  112. }, 100);
  113. });
  114. /*trace 3044*/
  115. test('trace 3044:表格名称中右键', function () {
  116. var editor = te.obj[0];
  117. var range = te.obj[1];
  118. stop();
  119. var lang = editor.getLang("contextMenu");
  120. editor.execCommand('cleardoc');
  121. editor.execCommand('inserttable');
  122. range.setStart(editor.body.getElementsByTagName('td')[0], 0).collapse(true).select();
  123. ua.contextmenu(editor.body.firstChild);
  124. var menutableBody = document.getElementsByClassName("edui-menu-body")[1];
  125. var forTable = document.getElementsByClassName('edui-for-table');
  126. if (ua.browser.ie) {
  127. ua.mouseenter(forTable[forTable.length - 1]);
  128. } else {
  129. ua.mouseover(forTable[forTable.length - 1]);
  130. }
  131. setTimeout(function () {
  132. lang = editor.getLang("contextMenu");
  133. ua.click(menutableBody.childNodes[9]);
  134. var caption = editor.body.getElementsByTagName('caption');
  135. equal(caption.length, 1, '插入表格名称');
  136. range.setStart(caption[0], 0).collapse(true).select();
  137. ua.contextmenu(editor.body.firstChild.firstChild);
  138. forTable = document.getElementsByClassName('edui-for-table');
  139. if (ua.browser.ie) {
  140. ua.mouseenter(forTable[forTable.length - 1]);
  141. } else {
  142. ua.mouseover(forTable[forTable.length - 1]);
  143. }
  144. setTimeout(function () {
  145. lang = editor.getLang("contextMenu");
  146. menutableBody = document.getElementsByClassName("edui-menu-body")[1];
  147. if (ua.browser.ie == 8) {
  148. equal(menutableBody.childNodes.length, 9, '9个子项目,其中有2条分隔线');
  149. } else {
  150. equal(menutableBody.childNodes.length, 7, '7个子项目');
  151. }
  152. var innerText = lang.deletetable + lang.deletecaption + lang.inserttitle+lang.inserttitlecol + lang.edittd + lang.edittable+lang.setbordervisible;
  153. if (browser.gecko) {
  154. equal(menutableBody.textContent, innerText, '检查menu显示的字符');
  155. } else {
  156. equal(menutableBody.innerText.replace(/[\r\n\t\u200b\ufeff]/g, ''), innerText, '检查menu显示的字符');
  157. }
  158. setTimeout(function () {
  159. document.getElementById('edui_fixedlayer').parentNode.removeChild(document.getElementById('edui_fixedlayer'));
  160. te.dom.push(editor.container);
  161. start();
  162. }, 200);
  163. }, 200);
  164. }, 200);
  165. });
  166. /*trace 3088*/
  167. test('trace 3088:检查表格属性', function () {
  168. // if (ua.browser.ie >8)return;
  169. var div = document.body.appendChild(document.createElement('div'));
  170. div.id = 'ue';
  171. var editor = UE.getEditor('ue');
  172. stop();
  173. editor.ready(function () {
  174. var range = new baidu.editor.dom.Range(editor.document);
  175. var lang = editor.getLang("contextMenu");
  176. editor.execCommand('cleardoc');
  177. editor.execCommand('inserttable');
  178. range.setStart(editor.body.getElementsByTagName('td')[0], 0).collapse(true).select();
  179. editor.execCommand('inserttitle');
  180. range.setStart(editor.body.getElementsByTagName('td')[0], 0).collapse(true).select();
  181. editor.execCommand('insertcaption');
  182. range.setStart(editor.body.getElementsByTagName('caption')[0], 0).collapse(true).select();
  183. editor.execCommand('deletetitle');
  184. setTimeout(function () {
  185. range.setStart(editor.body.getElementsByTagName('caption')[0], 0).collapse(true).select();
  186. ua.contextmenu(editor.body.firstChild.firstChild);
  187. setTimeout(function () {
  188. var menutable = document.getElementsByClassName("edui-menu-body")[1];
  189. var forTable = document.getElementsByClassName('edui-for-table');
  190. //点开'表格属性'(表格子菜单的倒数第二项)
  191. if (ua.browser.ie&&ua.browser.ie<9) {
  192. ua.mouseenter(forTable[forTable.length - 1]);
  193. ua.click(menutable.childNodes[menutable.childNodes.length-2]);
  194. } else {
  195. ua.mouseover(forTable[forTable.length - 1]);
  196. ua.click(menutable.childNodes[menutable.childNodes.length-2]);
  197. }
  198. lang = editor.getLang("contextMenu");
  199. setTimeout(function () {
  200. var iframe = document.getElementsByTagName('iframe');
  201. var iframe1 ;
  202. for (var i = 0; i <iframe.length; i++) {
  203. if (iframe[i].id && iframe[i].id.indexOf('edui') != -1) {
  204. iframe1 = iframe[i];
  205. break;
  206. }
  207. }
  208. equal(iframe1.contentDocument.getElementById('J_title').checked, false, '无标题行');
  209. equal(iframe1.contentDocument.getElementById('J_caption').checked, true, '有名称');
  210. range.setStart(editor.body.getElementsByTagName('td')[0], 0).collapse(true).select();
  211. ua.contextmenu(editor.body.firstChild);
  212. menutable = document.getElementsByClassName("edui-menu-body")[1];
  213. forTable = document.getElementsByClassName('edui-for-table');
  214. if (ua.browser.ie&&ua.browser.ie<9) {
  215. ua.mouseenter(forTable[forTable.length - 1]);
  216. } else {
  217. ua.mouseover(forTable[forTable.length - 1]);
  218. }
  219. lang = editor.getLang("contextMenu");
  220. ua.click(menutable.childNodes[14]);
  221. setTimeout(function () {
  222. iframe = document.getElementsByTagName('iframe');
  223. iframe1 = null;
  224. for (var i = 0; i <iframe.length; i++) {
  225. if (iframe[i].id && iframe[i].id.indexOf('edui') != -1) {
  226. iframe1 = iframe[i];
  227. break;
  228. }
  229. }
  230. equal(iframe1.contentDocument.getElementById('J_title').checked, false, '无标题行');
  231. equal(iframe1.contentDocument.getElementById('J_caption').checked, true, '有名称');
  232. setTimeout(function () {
  233. var c2 = document.getElementById('edui447_body');
  234. ua.click(c2);
  235. document.getElementById('edui_fixedlayer').parentNode.removeChild(document.getElementById('edui_fixedlayer'));
  236. UE.delEditor('ue');
  237. te.dom.push(document.getElementById('ue'));
  238. start();
  239. }, 500);
  240. },500);
  241. }, 600);
  242. }, 800);
  243. }, 800);
  244. });
  245. });
  246. /*trace 3045*/
  247. /*trace 3098*/
  248. /*trace 3410*/
  249. /*trace 3448*/
  250. test('检查表格属性', function () {
  251. if (ua.browser.ie&&ua.browser.ie <9 )return;//todo 1.2.6.1 #3098
  252. var div = document.body.appendChild(document.createElement('div'));
  253. div.id = 'ue';
  254. var editor = UE.getEditor('ue');
  255. stop();
  256. editor.ready(function () {
  257. var range = new baidu.editor.dom.Range(editor.document);
  258. var lang = editor.getLang("contextMenu");
  259. editor.execCommand('cleardoc');
  260. editor.execCommand('inserttable');
  261. range.setStart(editor.body.getElementsByTagName('td')[0], 0).collapse(true).select();
  262. editor.execCommand('insertcaption');
  263. setTimeout(function () {
  264. range.setStart(editor.body.getElementsByTagName('caption')[0], 0).collapse(true).select();
  265. ua.contextmenu(editor.body.firstChild.firstChild);
  266. var menutable = document.getElementsByClassName("edui-menu-body")[1];
  267. var forTable = document.getElementsByClassName('edui-for-table');
  268. if (ua.browser.ie&&ua.browser.ie<9) {
  269. ua.mouseenter(forTable[forTable.length - 1]);
  270. ua.click(menutable.childNodes[6]);
  271. } else {
  272. ua.mouseover(forTable[forTable.length - 1]);
  273. ua.click(menutable.childNodes[5]);
  274. }
  275. lang = editor.getLang("contextMenu");
  276. var iframe = document.getElementsByTagName('iframe');
  277. setTimeout(function () {
  278. var iframe1;
  279. for (var i = 0; i < iframe.length; i++) {
  280. if (iframe[i].id.indexOf('edui') != -1) {
  281. iframe1 = iframe[i];
  282. break;
  283. }
  284. }
  285. equal(iframe1.contentDocument.getElementById('J_tone').value.toLowerCase(), '#dddddd', '默认边框颜色');
  286. equal(iframe1.contentDocument.getElementById('J_title').checked, false, '无标题行');
  287. equal(iframe1.contentDocument.getElementById('J_caption').checked, true, '有名称');
  288. equal(iframe1.contentDocument.getElementById('J_autoSizePage').checked, true, '页面自适应');
  289. setTimeout(function () {
  290. document.getElementById('edui_fixedlayer').parentNode.removeChild(document.getElementById('edui_fixedlayer'));
  291. UE.delEditor('ue');
  292. te.dom.push(document.getElementById('ue'));
  293. start();
  294. }, 200);
  295. }, 300);
  296. }, 500);
  297. });
  298. });