elementpath.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. ///import core
  2. ///commands 选区路径
  3. ///commandsName ElementPath,elementPathEnabled
  4. ///commandsTitle 选区路径
  5. /**
  6. * 选区路径
  7. * @function
  8. * @name baidu.editor.execCommand
  9. * @param {String} cmdName elementpath选区路径
  10. */
  11. UE.plugins['elementpath'] = function(){
  12. var currentLevel,
  13. tagNames,
  14. me = this;
  15. me.setOpt('elementPathEnabled',true);
  16. if(!me.options.elementPathEnabled){
  17. return;
  18. }
  19. me.commands['elementpath'] = {
  20. execCommand : function( cmdName, level ) {
  21. var start = tagNames[level],
  22. range = me.selection.getRange();
  23. currentLevel = level*1;
  24. range.selectNode(start).select();
  25. },
  26. queryCommandValue : function() {
  27. //产生一个副本,不能修改原来的startElementPath;
  28. var parents = [].concat(this.selection.getStartElementPath()).reverse(),
  29. names = [];
  30. tagNames = parents;
  31. for(var i=0,ci;ci=parents[i];i++){
  32. if(ci.nodeType == 3) {
  33. continue;
  34. }
  35. var name = ci.tagName.toLowerCase();
  36. if(name == 'img' && ci.getAttribute('anchorname')){
  37. name = 'anchor';
  38. }
  39. names[i] = name;
  40. if(currentLevel == i){
  41. currentLevel = -1;
  42. break;
  43. }
  44. }
  45. return names;
  46. }
  47. };
  48. };