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

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

📁 tinyMCE在线编辑器使用手册
💻 HTML
📖 第 1 页 / 共 2 页
字号:
	}

	targetURL.protocol = null;
	targetURL.host = null;
	targetURL.port = null;
	targetURL.path = outPath == <span class="literal">""</span> &amp;&amp; forceSlash ? <span class="literal">"/"</span> : outPath;

	<span class="comment">// Remove document prefix from local anchors</span>
	var fileName = baseURL.path;
	var pos;

	<span class="reserved">if</span> ((pos = fileName.lastIndexOf(<span class="literal">'/'</span>)) != -1)
		fileName = fileName.substring(pos + 1);

	<span class="comment">// Is local anchor</span>
	<span class="reserved">if</span> (fileName == targetURL.path &amp;&amp; targetURL.anchor != <span class="literal">""</span>)
		targetURL.path = <span class="literal">""</span>;

	<span class="comment">// If empty and not local anchor force slash</span>
	<span class="reserved">if</span> (targetURL.path == <span class="literal">""</span> &amp;&amp; !targetURL.anchor)
		targetURL.path = <span class="literal">"/"</span>;

	<span class="reserved">return</span> <span class="reserved">this</span>.serializeURL(targetURL);
};

<span class="comment">/**
 * Converts an relative path to absolute path.
 *
 * <span class="attrib">@param</span> {string} base_url URL to make as a base path, URLs will be converted absolute from this point.
 * <span class="attrib">@param</span> {string} relative_url URL to convert into a absolute URL.
 * <span class="attrib">@return</span> Absolute URL based in input.
 * <span class="attrib">@type</span> string
 */</span>
TinyMCE_Engine.<span class="reserved">prototype</span>.convertRelativeToAbsoluteURL = <span class="reserved">function</span>(base_url, relative_url) {
	var baseURL = <span class="reserved">this</span>.parseURL(base_url);
	var relURL = <span class="reserved">this</span>.parseURL(relative_url);

	<span class="reserved">if</span> (relative_url == <span class="literal">""</span> || relative_url.charAt(0) == <span class="literal">'/'</span> || relative_url.indexOf(<span class="literal">'://'</span>) != -1 || relative_url.indexOf(<span class="literal">'mailto:'</span>) != -1 || relative_url.indexOf(<span class="literal">'javascript:'</span>) != -1)
		<span class="reserved">return</span> relative_url;

	<span class="comment">// Split parts</span>
	baseURLParts = baseURL[<span class="literal">'path'</span>].split(<span class="literal">'/'</span>);
	relURLParts = relURL[<span class="literal">'path'</span>].split(<span class="literal">'/'</span>);

	<span class="comment">// Remove empty chunks</span>
	var newBaseURLParts = new Array();
	<span class="reserved">for</span> (var i=baseURLParts.length-1; i&gt;=0; i--) {
		<span class="reserved">if</span> (baseURLParts[i].length == 0)
			continue;

		newBaseURLParts[newBaseURLParts.length] = baseURLParts[i];
	}
	baseURLParts = newBaseURLParts.reverse();

	<span class="comment">// Merge relURLParts chunks</span>
	var newRelURLParts = new Array();
	var numBack = 0;
	<span class="reserved">for</span> (var i=relURLParts.length-1; i&gt;=0; i--) {
		<span class="reserved">if</span> (relURLParts[i].length == 0 || relURLParts[i] == <span class="literal">"."</span>)
			continue;

		<span class="reserved">if</span> (relURLParts[i] == <span class="literal">'..'</span>) {
			numBack++;
			continue;
		}

		<span class="reserved">if</span> (numBack &gt; 0) {
			numBack--;
			continue;
		}

		newRelURLParts[newRelURLParts.length] = relURLParts[i];
	}

	relURLParts = newRelURLParts.reverse();

	<span class="comment">// Remove end from absolute path</span>
	var len = baseURLParts.length-numBack;
	var absPath = (len &lt;= 0 ? <span class="literal">""</span> : <span class="literal">"/"</span>) + baseURLParts.slice(0, len).join(<span class="literal">'/'</span>) + <span class="literal">"/"</span> + relURLParts.join(<span class="literal">'/'</span>);
	var start = <span class="literal">""</span>, end = <span class="literal">""</span>;

	<span class="comment">// Build output URL</span>
	relURL.protocol = baseURL.protocol;
	relURL.host = baseURL.host;
	relURL.port = baseURL.port;

	<span class="comment">// Re-add trailing slash if it's removed</span>
	<span class="reserved">if</span> (relURL.path.charAt(relURL.path.length-1) == <span class="literal">"/"</span>)
		absPath += <span class="literal">"/"</span>;

	relURL.path = absPath;

	<span class="reserved">return</span> <span class="reserved">this</span>.serializeURL(relURL);
};

<span class="comment">/**
 * Converts the specified URL based in TinyMCE configuration settings.
 *
 * <span class="attrib">@param</span> {string} url URL to convert based on config.
 * <span class="attrib">@param</span> {HTMLElement} node HTML element that holds the URL.
 * <span class="attrib">@param</span> {boolean} on_save Is this convertion the final output URL.
 * <span class="attrib">@return</span> Converted URL string.
 * <span class="attrib">@type</span> string
 */</span>
TinyMCE_Engine.<span class="reserved">prototype</span>.convertURL = <span class="reserved">function</span>(url, node, on_save) {
	var prot = document.location.protocol;
	var host = document.location.hostname;
	var port = document.location.port;

	<span class="comment">// Pass through file protocol</span>
	<span class="reserved">if</span> (prot == <span class="literal">"file:"</span>)
		<span class="reserved">return</span> url;

	<span class="comment">// Something is wrong, remove weirdness</span>
	url = tinyMCE.regexpReplace(url, <span class="literal">'(http|https):///'</span>, <span class="literal">'/'</span>);

	<span class="comment">// Mailto link or anchor (Pass through)</span>
	<span class="reserved">if</span> (url.indexOf(<span class="literal">'mailto:'</span>) != -1 || url.indexOf(<span class="literal">'javascript:'</span>) != -1 || tinyMCE.regexpReplace(url,<span class="literal">'[ \t\r\n\+]|%20'</span>,<span class="literal">''</span>).charAt(0) == <span class="literal">"#"</span>)
		<span class="reserved">return</span> url;

	<span class="comment">// Fix relative/Mozilla</span>
	<span class="reserved">if</span> (!tinyMCE.isMSIE &amp;&amp; !on_save &amp;&amp; url.indexOf(<span class="literal">"://"</span>) == -1 &amp;&amp; url.charAt(0) != <span class="literal">'/'</span>)
		<span class="reserved">return</span> tinyMCE.settings[<span class="literal">'base_href'</span>] + url;

	<span class="comment">// Handle relative URLs</span>
	<span class="reserved">if</span> (on_save &amp;&amp; tinyMCE.getParam(<span class="literal">'relative_urls'</span>)) {
		var curl = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings[<span class="literal">'base_href'</span>], url);
		<span class="reserved">if</span> (curl.charAt(0) == <span class="literal">'/'</span>)
			curl = tinyMCE.settings[<span class="literal">'document_base_prefix'</span>] + curl;

		var urlParts = tinyMCE.parseURL(curl);
		var tmpUrlParts = tinyMCE.parseURL(tinyMCE.settings[<span class="literal">'document_base_url'</span>]);

		<span class="comment">// Force relative</span>
		<span class="reserved">if</span> (urlParts[<span class="literal">'host'</span>] == tmpUrlParts[<span class="literal">'host'</span>] &amp;&amp; (urlParts[<span class="literal">'port'</span>] == tmpUrlParts[<span class="literal">'port'</span>]))
			<span class="reserved">return</span> tinyMCE.convertAbsoluteURLToRelativeURL(tinyMCE.settings[<span class="literal">'document_base_url'</span>], curl);
	}

	<span class="comment">// Handle absolute URLs</span>
	<span class="reserved">if</span> (!tinyMCE.getParam(<span class="literal">'relative_urls'</span>)) {
		var urlParts = tinyMCE.parseURL(url);
		var baseUrlParts = tinyMCE.parseURL(tinyMCE.settings[<span class="literal">'base_href'</span>]);

		<span class="comment">// Force absolute URLs from relative URLs</span>
		url = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings[<span class="literal">'base_href'</span>], url);

		<span class="comment">// If anchor and path is the same page</span>
		<span class="reserved">if</span> (urlParts[<span class="literal">'anchor'</span>] &amp;&amp; urlParts[<span class="literal">'path'</span>] == baseUrlParts[<span class="literal">'path'</span>])
			<span class="reserved">return</span> <span class="literal">"#"</span> + urlParts[<span class="literal">'anchor'</span>];
	}

	<span class="comment">// Remove current domain</span>
	<span class="reserved">if</span> (tinyMCE.getParam(<span class="literal">'remove_script_host'</span>)) {
		var start = <span class="literal">""</span>, portPart = <span class="literal">""</span>;

		<span class="reserved">if</span> (port != <span class="literal">""</span>)
			portPart = <span class="literal">":"</span> + port;

		start = prot + <span class="literal">"//"</span> + host + portPart + <span class="literal">"/"</span>;

		<span class="reserved">if</span> (url.indexOf(start) == 0)
			url = url.substring(start.length-1);
	}

	<span class="reserved">return</span> url;
};

<span class="comment">/**
 * Converts all img and a element URLs to absolute URLs. This will use the mce_src or mce_href attribute values
 * if they are provided. This function is used when the editor is initialized.
 *
 * <span class="attrib">@param</span> {HTMLElement} body HTML element to convert all URLs in.
 */</span>
TinyMCE_Engine.<span class="reserved">prototype</span>.convertAllRelativeURLs = <span class="reserved">function</span>(body) {
	<span class="comment">// Convert all image URL:s to absolute URL</span>
	var elms = body.getElementsByTagName(<span class="literal">"img"</span>);
	<span class="reserved">for</span> (var i=0; i&lt;elms.length; i++) {
		var src = tinyMCE.getAttrib(elms[i], <span class="literal">'src'</span>);

		var msrc = tinyMCE.getAttrib(elms[i], <span class="literal">'mce_src'</span>);
		<span class="reserved">if</span> (msrc != <span class="literal">""</span>)
			src = msrc;

		<span class="reserved">if</span> (src != <span class="literal">""</span>) {
			src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings[<span class="literal">'base_href'</span>], src);
			elms[i].setAttribute(<span class="literal">"src"</span>, src);
		}
	}

	<span class="comment">// Convert all link URL:s to absolute URL</span>
	var elms = body.getElementsByTagName(<span class="literal">"a"</span>);
	<span class="reserved">for</span> (var i=0; i&lt;elms.length; i++) {
		var href = tinyMCE.getAttrib(elms[i], <span class="literal">'href'</span>);

		var mhref = tinyMCE.getAttrib(elms[i], <span class="literal">'mce_href'</span>);
		<span class="reserved">if</span> (mhref != <span class="literal">""</span>)
			href = mhref;

		<span class="reserved">if</span> (href &amp;&amp; href != <span class="literal">""</span>) {
			href = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings[<span class="literal">'base_href'</span>], href);
			elms[i].setAttribute(<span class="literal">"href"</span>, href);
		}
	}
};
</pre>
	<hr>



<!-- ========== 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>
<font size="-1">

</font>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Mon Feb 13 16:28:04 2006</div>
</body>
</html>

⌨️ 快捷键说明

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