cmd.js 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570
  1. module('cmd');
  2. test('cmd.wrap', function() {
  3. var p = K.query('#test-data-01 p'),
  4. cloneP, div, strong, range, cmd;
  5. var div = K('<div></div>');
  6. document.body.appendChild(div.get());
  7. //1
  8. cloneP = p.cloneNode(true);
  9. document.body.appendChild(cloneP);
  10. strong = K.query('strong', cloneP);
  11. range = K.range(document);
  12. range.selectNode(strong);
  13. cmd = K.cmd(range);
  14. cmd.wrap('<span class="aaa"></span>');
  15. equals(range.html(), '<strong><span class="aaa">efg</span></strong>');
  16. document.body.removeChild(cloneP);
  17. //2
  18. cloneP = p.cloneNode(true);
  19. document.body.appendChild(cloneP);
  20. strong = K.query('strong', cloneP);
  21. range = K.range(document);
  22. range.selectNode(strong);
  23. cmd = K.cmd(range);
  24. cmd.wrap('<span style="color:red;"></span>');
  25. equals(range.html(), '<strong><span style="color:red;">efg</span></strong>');
  26. document.body.removeChild(cloneP);
  27. //3
  28. cloneP = p.cloneNode(true);
  29. document.body.appendChild(cloneP);
  30. strong = K.query('strong', cloneP);
  31. range = K.range(document);
  32. range.selectNodeContents(cloneP);
  33. cmd = K.cmd(range);
  34. cmd.wrap('<span style="color:red;"></span>');
  35. ok(K.queryAll('span[style]', cloneP).length === 7);
  36. equals(range.toString(), 'abcdefghijkxyz0123456789');
  37. document.body.removeChild(cloneP);
  38. //4
  39. cloneP = p.cloneNode(true);
  40. document.body.appendChild(cloneP);
  41. strong = K.query('strong', cloneP);
  42. range = K.range(document);
  43. range.selectNodeContents(cloneP);
  44. cmd = K.cmd(range);
  45. cmd.wrap('<span class="aaa"></span>');
  46. ok(K.queryAll('span[class="aaa"]', cloneP).length === 7);
  47. equals(range.toString(), 'abcdefghijkxyz0123456789');
  48. document.body.removeChild(cloneP);
  49. //5
  50. cloneP = p.cloneNode(true);
  51. document.body.appendChild(cloneP);
  52. strong = K.query('strong', cloneP);
  53. range = K.range(document);
  54. range.setStart(strong.firstChild, 1);
  55. range.setEnd(strong.firstChild, 2);
  56. cmd = K.cmd(range);
  57. cmd.wrap('<span class="aaa"></span>');
  58. equals(range.html(), '<span class="aaa">f</span>');
  59. document.body.removeChild(cloneP);
  60. //6
  61. cloneP = p.cloneNode(true);
  62. document.body.appendChild(cloneP);
  63. strong = K.query('strong', cloneP);
  64. range = K.range(document);
  65. range.setStart(strong.firstChild, 1);
  66. range.setEnd(strong.firstChild, 3);
  67. cmd = K.cmd(range);
  68. cmd.wrap('<span class="aaa"></span>');
  69. equals(range.html(), '<strong><span class="aaa">fg</span></strong>');
  70. document.body.removeChild(cloneP);
  71. //7
  72. cloneP = p.cloneNode(true);
  73. document.body.appendChild(cloneP);
  74. strong = K.query('strong', cloneP);
  75. range = K.range(document);
  76. range.setStart(strong.firstChild, 1);
  77. range.setEnd(strong.firstChild, 2);
  78. cmd = K.cmd(range);
  79. cmd.wrap('<strong></strong>');
  80. equals(range.html(), '<strong>f</strong>');
  81. document.body.removeChild(cloneP);
  82. //8
  83. cloneP = p.cloneNode(true);
  84. document.body.appendChild(cloneP);
  85. strong = K.query('strong', cloneP);
  86. range = K.range(document);
  87. range.setStart(cloneP, 1);
  88. range.setEnd(strong.firstChild, 3);
  89. cmd = K.cmd(range);
  90. cmd.wrap('<strong></strong>');
  91. equals(range.html(), '<strong>efg</strong>');
  92. document.body.removeChild(cloneP);
  93. //9
  94. cloneP = p.cloneNode(true);
  95. document.body.appendChild(cloneP);
  96. strong = K.query('strong', cloneP);
  97. range = K.range(document);
  98. range.selectNodeContents(strong);
  99. range.collapse(true);
  100. cmd = K.cmd(range);
  101. cmd.wrap('<strong></strong>');
  102. equals(strong.innerHTML.toLowerCase(), '<strong></strong>efg');
  103. document.body.removeChild(cloneP);
  104. //10
  105. cloneP = p.cloneNode(true);
  106. document.body.appendChild(cloneP);
  107. strong = K.query('strong', cloneP);
  108. range = K.range(document);
  109. range.selectNodeContents(cloneP);
  110. cmd = K.cmd(range);
  111. cmd.wrap('<div></div>');
  112. equals(K(cloneP).first().name, 'div');
  113. same(K(cloneP).children().length, 1);
  114. document.body.removeChild(cloneP);
  115. //11
  116. cloneP = p.cloneNode(true);
  117. document.body.appendChild(cloneP);
  118. strong = K.query('strong', cloneP);
  119. range = K.range(document);
  120. range.setStart(strong.firstChild, 3);
  121. range.setEnd(strong.nextSibling, 3);
  122. cmd = K.cmd(range);
  123. cmd.wrap('<strong></strong>');
  124. equals(cmd.range.html(), '<strong>hij</strong>');
  125. document.body.removeChild(cloneP);
  126. //12
  127. cloneP = p.cloneNode(true);
  128. document.body.appendChild(cloneP);
  129. strong = K.query('strong', cloneP);
  130. range = K.range(document);
  131. range.selectNode(strong);
  132. cmd = K.cmd(range);
  133. cmd.wrap('<div><p></p></div>');
  134. equals(range.html().replace(/\s/g, ''), '<div><p><strong>efg</strong></p></div>');
  135. document.body.removeChild(cloneP);
  136. //13
  137. cloneP = p.cloneNode(true);
  138. document.body.appendChild(cloneP);
  139. strong = K.query('strong', cloneP);
  140. range = K.range(document);
  141. range.setStart(strong.firstChild, 1);
  142. range.setEnd(strong.firstChild, 2);
  143. cmd = K.cmd(range);
  144. cmd.wrap('<span class="aaa"><strong></strong></span>');
  145. equals(range.html(), '<span class="aaa"><strong>f</strong></span>');
  146. document.body.removeChild(cloneP);
  147. //14
  148. cloneP = p.cloneNode(true);
  149. document.body.appendChild(cloneP);
  150. strong = K.query('strong', cloneP);
  151. range = K.range(document);
  152. range.setStart(strong.firstChild, 1);
  153. range.setEnd(strong.firstChild, 2);
  154. cmd = K.cmd(range);
  155. cmd.wrap('<span class="aaa"><strong><em></em></strong></span>');
  156. equals(range.html(), '<span class="aaa"><strong><em>f</em></strong></span>');
  157. document.body.removeChild(cloneP);
  158. //15
  159. cloneP = K('<p>abc</p>').get();
  160. document.body.appendChild(cloneP);
  161. range = K.range(document);
  162. range.selectNodeContents(cloneP);
  163. cmd = K.cmd(range);
  164. cmd.wrap('<strong></strong>');
  165. cmd.wrap('<em></em>');
  166. equals(range.html(), '<strong><em>abc</em></strong>');
  167. document.body.removeChild(cloneP);
  168. //16
  169. div.html('<p>123</p><p>456</p>');
  170. range = K.range(document);
  171. range.setStart(div.first().first()[0], 0);
  172. range.setEnd(div.last().last()[0], 3);
  173. cmd = K.cmd(range);
  174. cmd.wrap('<strong></strong>');
  175. equals(div.html().replace(/\n/, ''), '<p><strong>123</strong></p><p><strong>456</strong></p>');
  176. div.html('');
  177. //17
  178. div.html('123<strong>4</strong>56');
  179. range = K.range(document);
  180. range.setStart(div.first()[0], 2);
  181. range.setEnd(div.first()[0], 3);
  182. cmd = K.cmd(range);
  183. cmd.wrap('<strong></strong>');
  184. equals(range.html(), '<strong>3</strong>');
  185. div.html('');
  186. });
  187. test('cmd.remove', function() {
  188. var p = K.query('#test-data-01 p'),
  189. cloneP, strong, range, cmd;
  190. var div = K('<div></div>');
  191. document.body.appendChild(div[0]);
  192. //1
  193. cloneP = p.cloneNode(true);
  194. document.body.appendChild(cloneP);
  195. strong = K.query('strong', cloneP);
  196. range = K.range(document);
  197. range.selectNode(strong);
  198. cmd = K.cmd(range);
  199. cmd.remove({
  200. strong : '*'
  201. });
  202. equals(cmd.range.html(), 'efg');
  203. document.body.removeChild(cloneP);
  204. //2
  205. cloneP = p.cloneNode(true);
  206. document.body.appendChild(cloneP);
  207. strong = K.query('strong', cloneP);
  208. range = K.range(document);
  209. range.selectNode(strong);
  210. cmd = K.cmd(range);
  211. cmd.remove({
  212. '*' : '*'
  213. });
  214. equals(cmd.range.html(), 'efg');
  215. document.body.removeChild(cloneP);
  216. //3
  217. cloneP = p.cloneNode(true);
  218. document.body.appendChild(cloneP);
  219. strong = K.query('strong', cloneP);
  220. range = K.range(document);
  221. range.selectNode(strong);
  222. cmd = K.cmd(range);
  223. cmd.remove({
  224. 'span' : '*'
  225. });
  226. equals(cmd.range.html(), '<strong>efg</strong>');
  227. document.body.removeChild(cloneP);
  228. //4
  229. div.html('<strong>efg</strong>');
  230. range = K.range(document);
  231. range.setStart(div.first().first()[0], 1);
  232. range.setEnd(div.first().first()[0], 2);
  233. cmd = K.cmd(range);
  234. cmd.remove({
  235. 'strong' : '*'
  236. });
  237. equals(div.html(), '<strong>e</strong>f<strong>g</strong>');
  238. equals(cmd.range.toString(), 'f');
  239. div.html('');
  240. //5
  241. cloneP = p.cloneNode(true);
  242. document.body.appendChild(cloneP);
  243. strong = K.query('strong', cloneP);
  244. range = K.range(document);
  245. range.setStart(strong.firstChild, 0);
  246. range.setEnd(strong.firstChild, 3);
  247. cmd = K.cmd(range);
  248. cmd.remove({
  249. 'strong' : '*'
  250. });
  251. equals(cmd.range.toString(), 'efg');
  252. document.body.removeChild(cloneP);
  253. //6
  254. cloneP = p.cloneNode(true);
  255. document.body.appendChild(cloneP);
  256. strong = K.query('strong', cloneP);
  257. K(strong).addClass('abc').css('color', '#FF0000');
  258. range = K.range(document);
  259. range.setStart(strong.firstChild, 1);
  260. range.setEnd(strong.firstChild, 2);
  261. cmd = K.cmd(range);
  262. cmd.remove({
  263. 'strong' : 'class'
  264. });
  265. equals(range.html().toLowerCase(), '<strong style="color:#ff0000;">f</strong>');
  266. document.body.removeChild(cloneP);
  267. //7
  268. cloneP = p.cloneNode(true);
  269. document.body.appendChild(cloneP);
  270. strong = K.query('strong', cloneP);
  271. K(strong).addClass('abc').css('color', '#FF0000');
  272. range = K.range(document);
  273. range.setStart(strong.firstChild, 1);
  274. range.setEnd(strong.firstChild, 2);
  275. cmd = K.cmd(range);
  276. cmd.remove({
  277. 'strong' : 'class,style'
  278. });
  279. equals(cmd.range.html().toLowerCase(), '<strong>f</strong>');
  280. document.body.removeChild(cloneP);
  281. //8
  282. cloneP = p.cloneNode(true);
  283. document.body.appendChild(cloneP);
  284. strong = K.query('strong', cloneP);
  285. K(strong).addClass('abc').css('color', '#FF0000');
  286. range = K.range(document);
  287. range.setStart(strong.firstChild, 1);
  288. range.setEnd(strong.firstChild, 2);
  289. cmd = K.cmd(range);
  290. cmd.remove({
  291. 'strong' : 'class,.color,.background-color'
  292. });
  293. equals(cmd.range.html().toLowerCase(), '<strong>f</strong>');
  294. document.body.removeChild(cloneP);
  295. //9
  296. cloneP = p.cloneNode(true);
  297. document.body.appendChild(cloneP);
  298. strong = K.query('strong', cloneP);
  299. range = K.range(document);
  300. range.setStart(cloneP, 1);
  301. range.setEnd(strong.firstChild, 3);
  302. cmd = K.cmd(range);
  303. cmd.remove({
  304. 'strong' : '*'
  305. });
  306. equals(range.html(), 'efg');
  307. document.body.removeChild(cloneP);
  308. //10
  309. cloneP = p.cloneNode(true);
  310. document.body.appendChild(cloneP);
  311. strong = K.query('strong', cloneP);
  312. strong.innerHTML = '<strong>efg</strong>';
  313. range = K.range(document);
  314. range.setStart(strong.firstChild.firstChild, 1);
  315. range.setEnd(strong.firstChild.firstChild, 2);
  316. cmd = K.cmd(range);
  317. cmd.remove({
  318. 'strong' : '*'
  319. });
  320. equals(range.html(), 'f');
  321. document.body.removeChild(cloneP);
  322. //11
  323. cloneP = p.cloneNode(true);
  324. document.body.appendChild(cloneP);
  325. strong = K.query('strong', cloneP);
  326. strong.innerHTML = '<strong>efg</strong>';
  327. range = K.range(document);
  328. range.setStart(strong.firstChild.firstChild, 0);
  329. range.setEnd(strong.firstChild.firstChild, 3);
  330. cmd = K.cmd(range);
  331. cmd.remove({
  332. 'strong' : '*'
  333. });
  334. equals(K(cloneP).html().substr(0, 11), 'abcdefghijk');
  335. document.body.removeChild(cloneP);
  336. //12
  337. cloneP = p.cloneNode(true);
  338. document.body.appendChild(cloneP);
  339. strong = K.query('strong', cloneP);
  340. range = K.range(document);
  341. range.setStart(strong.firstChild, 1);
  342. range.setEnd(strong.firstChild, 1);
  343. cmd = K.cmd(range);
  344. cmd.remove({
  345. 'strong' : '*'
  346. });
  347. var str = 'abcd<strong>e</strong><strong>fg';
  348. equals(K(cloneP).html().substr(0, str.length), str);
  349. document.body.removeChild(cloneP);
  350. //13
  351. cloneP = p.cloneNode(true);
  352. document.body.appendChild(cloneP);
  353. strong = K.query('strong', cloneP);
  354. range = K.range(document);
  355. range.setStart(strong.firstChild, 1);
  356. range.setEnd(strong.firstChild, 2);
  357. cmd = K.cmd(range);
  358. cmd.remove({
  359. 'strong' : '*'
  360. });
  361. cmd.wrap('<strong></strong>');
  362. equals(range.html(), '<strong>f</strong>');
  363. document.body.removeChild(cloneP);
  364. //14
  365. cloneP = p.cloneNode(true);
  366. document.body.appendChild(cloneP);
  367. strong = K.query('strong', cloneP);
  368. range = K.range(document);
  369. range.selectNodeContents(strong);
  370. cmd = K.cmd(range);
  371. cmd.remove({
  372. strong : '*'
  373. });
  374. equals(range.html(), 'efg');
  375. document.body.removeChild(cloneP);
  376. });
  377. test('cmd.execute', function() {
  378. var div = K('<div></div>'), node, range;
  379. document.body.appendChild(div[0]);
  380. //1
  381. node = K('<strong>abcd</strong>').get();
  382. div.append(node);
  383. range = K.range(document);
  384. range.selectNode(node);
  385. cmd = K.cmd(range);
  386. cmd.bold();
  387. cmd.bold();
  388. equals(range.html(), '<strong>abcd</strong>');
  389. div.html('');
  390. //2
  391. div.html('abcd');
  392. range = K.range(document);
  393. range.setStart(div.first().get(), 0);
  394. range.setEnd(div.first().get(), 4);
  395. cmd = K.cmd(range);
  396. cmd.bold();
  397. cmd.italic();
  398. equals(range.html(), '<strong><em>abcd</em></strong>');
  399. div.html('');
  400. //3
  401. div.html('abcd');
  402. range = K.range(document);
  403. range.setStart(div.first().get(), 0);
  404. range.setEnd(div.first().get(), 4);
  405. cmd = K.cmd(range);
  406. cmd.bold();
  407. cmd.italic();
  408. cmd.bold();
  409. equals(range.html(), '<em>abcd</em>');
  410. div.html('');
  411. //4
  412. div.html('<strong>abc</strong><strong>def</strong><strong>ghi</strong>');
  413. range = K.range(document);
  414. range.setStart(div.first().first().get(), 3);
  415. range.setEnd(div.first().next().first().get(), 3);
  416. cmd = K.cmd(range);
  417. cmd.bold();
  418. equals(range.html(), 'def');
  419. div.html('');
  420. //5
  421. div.html('<div>abcd<img /><strong>efg</strong><br />hijk</div>');
  422. range = K.range(document);
  423. range.selectNodeContents(div[0]);
  424. cmd = K.cmd(range);
  425. cmd.removeformat();
  426. equals(range.html(), '<div>abcd<img />efg<br />hijk</div>');
  427. div.html('');
  428. //6
  429. div.html('<p>abcd</p><p>1234</p>');
  430. range = K.range(document);
  431. range.selectNodeContents(div[0]);
  432. cmd = K.cmd(range);
  433. cmd.bold();
  434. equals(range.html().replace(/\n/, ''), '<p><strong>abcd</strong></p><p><strong>1234</strong></p>');
  435. cmd.removeformat();
  436. equals(range.html().replace(/\n/, ''), '<p>abcd</p><p>1234</p>');
  437. div.html('');
  438. //7
  439. div.html('<p><strong>abcd</strong></p><p><strong>1234</strong></p>');
  440. range = K.range(document);
  441. range.setStart(div.first().first().last()[0], 0);
  442. range.setEnd(div.last().last().last()[0], 4);
  443. cmd = K.cmd(range);
  444. cmd.removeformat();
  445. equals(range.html().replace(/\n/, ''), '<p>abcd</p><p>1234</p>');
  446. div.html('');
  447. //8
  448. div.html('<p><strong>abcd</strong></p><p><strong>1234</strong></p>');
  449. range = K.range(document);
  450. range.setStart(div.first().first().first()[0], 0);
  451. range.setEnd(div.last().last().last()[0], 4);
  452. cmd = K.cmd(range);
  453. cmd.italic();
  454. equals(range.html().replace(/\n/, ''), '<p><strong><em>abcd</em></strong></p><p><strong><em>1234</em></strong></p>');
  455. div.html('');
  456. //9
  457. div.html('<p><strong>abcd</strong></p><p><strong>1234</strong></p>');
  458. range = K.range(document);
  459. range.setStart(div.first().first()[0], 0);
  460. range.setEnd(div.last().last()[0], 1);
  461. cmd = K.cmd(range);
  462. cmd.italic();
  463. equals(range.html().replace(/\n/, ''), '<p><strong><em>abcd</em></strong></p><p><strong><em>1234</em></strong></p>');
  464. div.html('');
  465. //10
  466. div.html('<table><tr><td>1</td></tr></table><img>0123456789');
  467. range = K.range(document);
  468. range.setStart(div.last()[0], 4);
  469. range.setEnd(div.last()[0], 6);
  470. cmd = K.cmd(range);
  471. cmd.bold();
  472. cmd.bold();
  473. cmd.bold();
  474. equals(range.html().replace(/\n/, ''), '<strong>45</strong>');
  475. div.html('');
  476. //11
  477. div.html('<table><tr><td>1</td></tr></table><img>0123<strong>45</strong>6789');
  478. range = K.range(document);
  479. range.setStart(div.last().prev().prev()[0], 4);
  480. range.setEnd(div.last()[0], 0);
  481. cmd = K.cmd(range);
  482. cmd.bold();
  483. equals(range.html().replace(/\n/, ''), '45');
  484. div.html('');
  485. //12
  486. div.html('<p><strong><em>123456789</em></strong></p>');
  487. range = K.range(document);
  488. range.setStart(div.first().first().first()[0], 0);
  489. range.setEnd(div.first().first().first().first()[0], 9);
  490. cmd = K.cmd(range);
  491. cmd.underline();
  492. equals(div.html().replace(/\n/, ''), '<p><strong><em><u>123456789</u></em></strong></p>');
  493. div.html('');
  494. //13
  495. div.html('<p><strong><em>123456789</em></strong></p>');
  496. range = K.range(document);
  497. range.setStart(div.first().first().first()[0], 0);
  498. range.setEnd(div.first().first().first().first()[0], 9);
  499. cmd = K.cmd(range);
  500. cmd.bold();
  501. equals(div.html().replace(/\n/, ''), '<p><em>123456789</em></p>');
  502. div.html('');
  503. //14
  504. div.html('<p style="background-color:#000000;">1234</p>');
  505. range = K.range(document);
  506. range.setStart(div.first().first()[0], 0);
  507. range.setEnd(div.first().first()[0], 4);
  508. cmd = K.cmd(range);
  509. cmd.removeformat();
  510. equals(div.html().replace(/\n/, ''), '<p>1234</p>');
  511. div.html('');
  512. //15
  513. div.html('<span style="color:#e56600;">abc</span><span><span style="color:#e56600;">d</span><span style="color:#e56600;">efg</span></span>');
  514. range = K.range(document);
  515. range.setStart(div[0], 0);
  516. range.setEnd(div[0], 2);
  517. cmd = K.cmd(range);
  518. cmd.removeformat();
  519. same(range.html(), 'abcdefg');
  520. div.html('');
  521. //14
  522. div.html('\n<span></span><span><span style="font-size:18px;">abcd</span><span style="font-size:18px;"></span><span style="font-size:18px;"></span></span>\n');
  523. range = K.range(document);
  524. range.setEnd(div[0], 0);
  525. range.setEnd(div.first().next()[0], 1);
  526. cmd = K.cmd(range);
  527. cmd.removeformat();
  528. same(range.html(), 'abcd');
  529. div.html('');
  530. //15
  531. div.html('<img src="/kindeditor/plugins/emoticons/images/0.gif" /><strong>abc</strong>');
  532. range = K.range(document);
  533. range.selectNodeContents(div.last()[0]);
  534. cmd = K.cmd(range);
  535. cmd.bold();
  536. equals(div.html(), '<img src="/kindeditor/plugins/emoticons/images/0.gif" />abc');
  537. div.html('');
  538. });
  539. test('cmd.inserthtml', function() {
  540. //1
  541. var div = K('<div>1234</div>');
  542. K(document.body).append(div);
  543. range = K.range(document);
  544. range.setStart(div.first()[0], 1);
  545. range.setEnd(div.first()[0], 1);
  546. cmd = K.cmd(range);
  547. cmd.inserthtml('<strong>abcd</strong>');
  548. equals(div.html().replace(/\n/, ''), '1<strong>abcd</strong>234');
  549. div.remove();
  550. });
  551. test('cmd.insertimage', function() {
  552. //1
  553. var div = K('<div><p align="center">123</p><p align="center"><img style="margin-right:10px;" height="100" width="100" /></p><p align="center">123</p></div>');
  554. K(document.body).append(div);
  555. range = K.range(document);
  556. var img = K('img', div);
  557. range.selectNode(img[0]);
  558. cmd = K.cmd(range);
  559. var url = 'http://www.kindsoft.net/images/logo.png';
  560. cmd.insertimage(url);
  561. equals(K('img', div).attr('src'), url);
  562. div.remove();
  563. });