dijit._editor.plugins.EnterKeyHandling.regularPsToSingleLinePs
dojo.require("dijit._editor.plugins.EnterKeyHandling");
defined in dijit/_editor/plugins/EnterKeyHandling.js
Usage
function (element, noWhiteSpaceInEmptyP) (view source)
function wrapLinesInPs(el){ // move "lines" of top-level text nodes into ps function wrapNodes(nodes){ // nodes are assumed to all be siblings var newP = nodes[0].ownerDocument.createElement('p'); // FIXME: not very idiomatic nodes[0].parentNode.insertBefore(newP, nodes[0]); dojo.forEach(nodes, function(node){ newP.appendChild(node); }); } var currentNodeIndex = 0; var nodesInLine = []; var currentNode; while(currentNodeIndex < el.childNodes.length){ currentNode = el.childNodes[currentNodeIndex]; if( (currentNode.nodeName!='BR') && (currentNode.nodeType==1) && (dojo.style(currentNode, "display")!="block") ){ nodesInLine.push(currentNode); }else{ // hit line delimiter; process nodesInLine if there are any var nextCurrentNode = currentNode.nextSibling; if(nodesInLine.length){ wrapNodes(nodesInLine); currentNodeIndex = (currentNodeIndex+1)-nodesInLine.length; if(currentNode.nodeName=="BR"){ dojo._destroyElement(currentNode); } } nodesInLine = []; } currentNodeIndex++; } if(nodesInLine.length){ wrapNodes(nodesInLine); } } function splitP(el){ // split a paragraph into seperate paragraphs at BRs var currentNode = null; var trailingNodes = []; var lastNodeIndex = el.childNodes.length-1; for(var i=lastNodeIndex; i>=0; i--){ currentNode = el.childNodes[i]; if(currentNode.nodeName=="BR"){ var newP = currentNode.ownerDocument.createElement('p'); dojo.place(newP, el, "after"); if (trailingNodes.length==0 && i != lastNodeIndex) { newP.innerHTML = " " } dojo.forEach(trailingNodes, function(node){ newP.appendChild(node); }); dojo._destroyElement(currentNode); trailingNodes = []; }else{ trailingNodes.unshift(currentNode); } } } var pList = []; var ps = element.getElementsByTagName('p'); dojo.forEach(ps, function(p){ pList.push(p); }); dojo.forEach(pList, function(p){ if( (p.previousSibling) && (p.previousSibling.nodeName == 'P' || dojo.style(p.previousSibling, 'display') != 'block') ){ var newP = p.parentNode.insertBefore(this.document.createElement('p'), p); // this is essential to prevent IE from losing the P. // if it's going to be innerHTML'd later we need // to add the to _really_ force the issue newP.innerHTML = noWhiteSpaceInEmptyP ? "" : " "; } splitP(p); },this.editor); wrapLinesInPs(element); return element;
parameter | type | description |
---|---|---|
element | ||
noWhiteSpaceInEmptyP |