⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 overview-summary-tinymce_forceparagraphs.class.js.html

📁 tinyMCE在线编辑器使用手册
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>
 Overview
</title>
<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script>
function asd() {
	
		parent.document.title="TinyMCE_ForceParagraphs.class.js Overview";
	
}
</script>
</head>
<body bgcolor="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> 	<font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top">
<em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<center>
	
	   <h2>TinyMCE_ForceParagraphs.class.js</h2>
	
</center>

	


<h4>Summary</h4>
<p>
	
		No overview generated for 'TinyMCE_ForceParagraphs.class.js'<BR/><BR/>
	
</p>

<hr>



<!-- ========== METHOD SUMMARY =========== -->

<!-- ========== END METHOD SUMMARY =========== -->


        <pre class="sourceview"><span class="comment">/**
 * $RCSfile: overview-summary-TinyMCE_ForceParagraphs.class.js.html,v $
 * $Revision: 1.13 $
 * $Date: 2006/02/13 15:28:43 $
 *
 * <span class="attrib">@author</span> Moxiecode
 * <span class="attrib">@copyright</span> Copyright ?2004-2006, Moxiecode Systems AB, All rights reserved.
 */</span>

<span class="comment">/**
 * Forces P tags on return/enter in Gecko browsers.
 */</span>
var TinyMCE_ForceParagraphs = {
	<span class="comment">/**
	 * Inserts a paragraph at the current cursor location.
	 *
	 * <span class="attrib">@param</span> {TinyMCE_Control} inst TinyMCE editor control instance.
	 * <span class="attrib">@param</span> {DOMEvent} e DOM event object.
	 * <span class="attrib">@return</span> true on success or false if it fails.
	 * <span class="attrib">@type</span> boolean
	 * <span class="attrib">@private</span>
	 */</span>
	_insertPara : <span class="reserved">function</span>(inst, e) {
		<span class="reserved">function</span> isEmpty(para) {
			<span class="reserved">function</span> isEmptyHTML(html) {
				<span class="reserved">return</span> html.replace(new RegExp(<span class="literal">'[ \t\r\n]+'</span>, <span class="literal">'g'</span>), <span class="literal">''</span>).toLowerCase() == <span class="literal">""</span>;
			}

			<span class="comment">// Check for images</span>
			<span class="reserved">if</span> (para.getElementsByTagName(<span class="literal">"img"</span>).length &gt; 0)
				<span class="reserved">return</span> false;

			<span class="comment">// Check for tables</span>
			<span class="reserved">if</span> (para.getElementsByTagName(<span class="literal">"table"</span>).length &gt; 0)
				<span class="reserved">return</span> false;

			<span class="comment">// Check for HRs</span>
			<span class="reserved">if</span> (para.getElementsByTagName(<span class="literal">"hr"</span>).length &gt; 0)
				<span class="reserved">return</span> false;

			<span class="comment">// Check all textnodes</span>
			var nodes = tinyMCE.getNodeTree(para, new Array(), 3);
			<span class="reserved">for</span> (var i=0; i&lt;nodes.length; i++) {
				<span class="reserved">if</span> (!isEmptyHTML(nodes[i].nodeValue))
					<span class="reserved">return</span> false;
			}

			<span class="comment">// No images, no tables, no hrs, no text content then it's empty</span>
			<span class="reserved">return</span> true;
		}

		var doc = inst.getDoc();
		var sel = inst.getSel();
		var win = inst.contentWindow;
		var rng = sel.getRangeAt(0);
		var body = doc.body;
		var rootElm = doc.documentElement;
		var blockName = <span class="literal">"P"</span>;

	<span class="comment">//	tinyMCE.debug(body.innerHTML);</span>

	<span class="comment">//	debug(e.target, sel.anchorNode.nodeName, sel.focusNode.nodeName, rng.startContainer, rng.endContainer, rng.commonAncestorContainer, sel.anchorOffset, sel.focusOffset, rng.toString());</span>

		<span class="comment">// Setup before range</span>
		var rngBefore = doc.createRange();
		rngBefore.setStart(sel.anchorNode, sel.anchorOffset);
		rngBefore.collapse(true);

		<span class="comment">// Setup after range</span>
		var rngAfter = doc.createRange();
		rngAfter.setStart(sel.focusNode, sel.focusOffset);
		rngAfter.collapse(true);

		<span class="comment">// Setup start/end points</span>
		var direct = rngBefore.compareBoundaryPoints(rngBefore.START_TO_END, rngAfter) &lt; 0;
		var startNode = direct ? sel.anchorNode : sel.focusNode;
		var startOffset = direct ? sel.anchorOffset : sel.focusOffset;
		var endNode = direct ? sel.focusNode : sel.anchorNode;
		var endOffset = direct ? sel.focusOffset : sel.anchorOffset;

		startNode = startNode.nodeName == <span class="literal">"BODY"</span> ? startNode.firstChild : startNode;
		endNode = endNode.nodeName == <span class="literal">"BODY"</span> ? endNode.firstChild : endNode;

		<span class="comment">// tinyMCE.debug(startNode, endNode);</span>

		<span class="comment">// Get block elements</span>
		var startBlock = tinyMCE.getParentBlockElement(startNode);
		var endBlock = tinyMCE.getParentBlockElement(endNode);

		<span class="comment">// Use current block name</span>
		<span class="reserved">if</span> (startBlock != null) {
			blockName = startBlock.nodeName;

			<span class="comment">// Use P instead</span>
			<span class="reserved">if</span> (blockName == <span class="literal">"TD"</span> || blockName == <span class="literal">"TABLE"</span> || (blockName == <span class="literal">"DIV"</span> &amp;&amp; new RegExp(<span class="literal">'left|right'</span>, <span class="literal">'gi'</span>).test(startBlock.style.cssFloat)))
				blockName = <span class="literal">"P"</span>;
		}

		<span class="comment">// Within a list use normal behaviour</span>
		<span class="reserved">if</span> (tinyMCE.getParentElement(startBlock, <span class="literal">"OL,UL"</span>) != null)
			<span class="reserved">return</span> false;

		<span class="comment">// Within a table create new paragraphs</span>
		<span class="reserved">if</span> ((startBlock != null &amp;&amp; startBlock.nodeName == <span class="literal">"TABLE"</span>) || (endBlock != null &amp;&amp; endBlock.nodeName == <span class="literal">"TABLE"</span>))
			startBlock = endBlock = null;

		<span class="comment">// Setup new paragraphs</span>
		var paraBefore = (startBlock != null &amp;&amp; startBlock.nodeName == blockName) ? startBlock.cloneNode(false) : doc.createElement(blockName);
		var paraAfter = (endBlock != null &amp;&amp; endBlock.nodeName == blockName) ? endBlock.cloneNode(false) : doc.createElement(blockName);

		<span class="comment">// Is header, then force paragraph under</span>
		<span class="reserved">if</span> (/^(H[1-6])$/.test(blockName))
			paraAfter = doc.createElement(<span class="literal">"p"</span>);

		<span class="comment">// Setup chop nodes</span>
		var startChop = startNode;
		var endChop = endNode;

		<span class="comment">// Get startChop node</span>
		node = startChop;
		do {
			<span class="reserved">if</span> (node == body || node.nodeType == 9 || tinyMCE.isBlockElement(node))
				break;

			startChop = node;
		} <span class="reserved">while</span> ((node = node.previousSibling ? node.previousSibling : node.parentNode));

		<span class="comment">// Get endChop node</span>
		node = endChop;
		do {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -