<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; JS: pasteHTML между элементами]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=13269&amp;type=atom" />
	<updated>2017-12-06T20:04:42Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=13269</id>
		<entry>
			<title type="html"><![CDATA[Re: JS: pasteHTML между элементами]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=122009#p122009" />
			<content type="html"><![CDATA[<p>Ну у меня тоже частный случай, мне это надо было для одной фичи в AhkSpy, поэтому код библиотеки в общем AutoHotkey коде из-за одного пустяка на JS это слишком.<br />Далее оказалось что надо было это мне исключительно из за моего неправильного подхода к HTML, в итоге всё оказалось проще. <br />Но решение конечно интересно, если библиотеки это делают, значит оно есть, а я до него не дошёл.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2017-12-06T20:04:42Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=122009#p122009</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: pasteHTML между элементами]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=121999#p121999" />
			<content type="html"><![CDATA[<p><strong>serzh82saratov</strong>, а стоит ли выдёргивать ? Если вдуматься, то отсутствие <strong>createRange</strong> у document в <strong>IE8</strong> это частный случай его (IE) ущербности. Завтра может понадобиться реализовать тоже самое под IE6 / IE7 и т.п. А значит искать новые пути подхода. А раз так, то лучше обстоятельства подогнать под удобство, чем жертвовать удобством из-за обстоятельств. Проще говоря - 158 кб (и это ещё не minified) не особо портят картину, как мне кажется. В принципе задачу можно решить и через jQuery. Там так и вообще 86 кб кода. На то он (jQuery) и делался, чтобы облегчить момент разработки. )</p>]]></content>
			<author>
				<name><![CDATA[Xameleon]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=8836</uri>
			</author>
			<updated>2017-12-06T10:50:29Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=121999#p121999</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: pasteHTML между элементами]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=121998#p121998" />
			<content type="html"><![CDATA[<p>Слишком громоздко, оттуда даже выдернуть что то тяжело.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2017-12-06T10:13:59Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=121998#p121998</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: pasteHTML между элементами]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=121996#p121996" />
			<content type="html"><![CDATA[<p>Как вариант, можно использовать <strong>rangy</strong><br /></p><div class="codebox"><pre><code>
&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;
	&lt;head&gt;
		&lt;meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;IE=IE8&quot; /&gt;
		&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
		&lt;!-- rangy &quot;https://github.com/timdown/rangy/wiki&quot; --&gt;
		&lt;script src=&quot;https://rawgit.com/timdown/rangy/master/lib/rangy-core.js&quot;&gt;&lt;/script&gt;
		&lt;style&gt;
			#Ref3, #Ref4 {color: green;}
			#Ref1, #Ref2 {color: red;}
		&lt;/style&gt;
	&lt;/head&gt;
	&lt;body&gt;
		&lt;span id=&#039;Ref1&#039;&gt;content of span1 &lt;/span&gt;нынешний код или пусто&lt;span id=&#039;Ref3&#039;&gt;, ещё код &lt;/span&gt;&lt;span id=&#039;Ref4&#039;&gt;, и ещё код&lt;/span&gt;&lt;span id=&#039;Ref2&#039;&gt; content of span2&lt;/span&gt;
		&lt;button onclick=&quot;test()&quot;&gt;replace&lt;/button&gt;
		&lt;script type=&quot;text/javascript&quot;&gt;
			function test(){
				var r = rangy.createRange();
				r.setStartAfter(Ref1);
				r.setEndBefore(Ref2);
				r.deleteContents();
				r.insertNode(document.createTextNode(&#039;test&#039;));
			}
		&lt;/script&gt;
	&lt;/body&gt;
&lt;/html&gt;
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Xameleon]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=8836</uri>
			</author>
			<updated>2017-12-06T08:54:15Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=121996#p121996</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: pasteHTML между элементами]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=121991#p121991" />
			<content type="html"><![CDATA[<p>У меня ещё такой костыль, но это только если стразу после &quot;&lt;span id=&#039;Ref1&#039;&gt;content of span1 &lt;/span&gt;&quot; не будет пусто и будет символ но не элемент.<br /></p><div class="codebox"><pre><code>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;
	&lt;head&gt;
		&lt;meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;IE=IE8&quot; /&gt;
		&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
	&lt;/head&gt;
	&lt;body&gt;
		&lt;p id=&#039;con&#039;&gt;&lt;span id=&#039;Ref1&#039;&gt;content of span1 &lt;/span&gt;нынешний код или пусто&lt;span id=&#039;Ref3&#039;&gt;, ещё код &lt;/span&gt;&lt;span id=&#039;Ref4&#039;&gt;, и ещё код&lt;/span&gt;&lt;span id=&#039;Ref2&#039;&gt; content of span2&lt;/span&gt;&lt;/p&gt;
		&lt;button onclick=&quot;test()&quot;&gt;replace&lt;/button&gt;
		
		&lt;script type=&quot;text/javascript&quot;&gt;
		function test(){
			var rng1 = document.body.createTextRange();
			rng1.moveToElementText(document.getElementById(&quot;Ref1&quot;));
			
			var rng2 = document.body.createTextRange();
			rng2.moveToElementText(document.getElementById(&quot;Ref2&quot;));
			
			alert(document.getElementById(&quot;con&quot;).innerHTML);
			
			rng1.setEndPoint(&quot;StartToStart&quot;, rng2);
			rng1.moveStart(&quot;character&quot;, 1);
			rng1.moveStart(&quot;character&quot;, -1);
			rng1.pasteHTML(&quot;New HTML&quot;);
			
			alert(document.getElementById(&quot;con&quot;).innerHTML);
		}
		&lt;/script&gt;
	&lt;/body&gt;
	&lt;style&gt;
		#Ref3, #Ref4 {color: green;}
		#Ref1, #Ref2 {color: red;}
	&lt;/style&gt;
&lt;/html&gt;</code></pre></div>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2017-12-05T22:02:50Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=121991#p121991</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: pasteHTML между элементами]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=121990#p121990" />
			<content type="html"><![CDATA[<p>У меня почему то </p><div class="quotebox"><blockquote><p>Объект не поддерживает свойство или метод &quot;createRange&quot;</p></blockquote></div><br /><p>На 9 работает как надо, но мне для IE8 надо.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2017-12-05T21:51:44Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=121990#p121990</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: pasteHTML между элементами]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=121989#p121989" />
			<content type="html"><![CDATA[<p><strong>serzh82saratov</strong>, ах вон оно как. Тогда понятно.</p><p>Тогда наверное ещё можно так ?<br /></p><div class="codebox"><pre><code>
function test(){
	var r = document.createRange();
	r.setStartAfter(Ref1);
	r.setEndBefore(Ref2);
	r.deleteContents();
	r.insertNode(document.createTextNode(&#039;test&#039;));
}
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Xameleon]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=8836</uri>
			</author>
			<updated>2017-12-05T20:28:54Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=121989#p121989</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: pasteHTML между элементами]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=121988#p121988" />
			<content type="html"><![CDATA[<p>Не получится, &quot;нынешний код&quot; это не только текст, но и <span class="bbu">любой</span> код.<br /></p><div class="codebox"><pre><code>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;
	&lt;head&gt;
		&lt;meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;IE=IE8&quot; /&gt;
		&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
	&lt;/head&gt;
	&lt;body&gt;
		&lt;span id=&#039;Ref1&#039;&gt;content of span1 &lt;/span&gt;нынешний код или пусто&lt;span id=&#039;Ref3&#039;&gt;, ещё код &lt;/span&gt;&lt;span id=&#039;Ref4&#039;&gt;, и ещё код&lt;/span&gt;&lt;span id=&#039;Ref2&#039;&gt; content of span2&lt;/span&gt;
		&lt;button onclick=&quot;test()&quot;&gt;replace&lt;/button&gt;
		&lt;script type=&quot;text/javascript&quot;&gt;
		function test(){
			document.getElementById(&#039;Ref1&#039;).nextSibling.data = &quot;[замена]&quot;
		}
		&lt;/script&gt;
	&lt;/body&gt;
	&lt;style&gt;
		#Ref3, #Ref4 {color: green;}
		#Ref1, #Ref2 {color: red;}
	&lt;/style&gt;
&lt;/html&gt;</code></pre></div>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2017-12-05T20:25:29Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=121988#p121988</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: pasteHTML между элементами]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=121987#p121987" />
			<content type="html"><![CDATA[<p>Господа, прошу простить меня, если не разобрался в постановке задачи, но вроде бы можно проще ?</p><div class="codebox"><pre><code>
&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;
	&lt;head&gt;
		&lt;meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;IE=IE8&quot; /&gt;
		&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
	&lt;/head&gt;
	&lt;body&gt;
		&lt;span id=&#039;Ref1&#039;&gt;content of span1 &lt;/span&gt;нынешний код или пусто&lt;span id=&#039;Ref2&#039;&gt; content of span2&lt;/span&gt;
		&lt;button onclick=&quot;test()&quot;&gt;replace&lt;/button&gt;
		&lt;script type=&quot;text/javascript&quot;&gt;
		function test(){
			Ref1.nextSibling.data = &quot;[замена]&quot;
		}
		&lt;/script&gt;
	&lt;/body&gt;
&lt;/html&gt;
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Xameleon]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=8836</uri>
			</author>
			<updated>2017-12-05T20:16:43Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=121987#p121987</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: pasteHTML между элементами]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=121938#p121938" />
			<content type="html"><![CDATA[<p>Можно, например, так: </p><div class="codebox"><pre><code>document.onclick = function() {
	var TextRange = document.body.createTextRange();
	while (TextRange.findText(&quot;нынешний код, но не пусто (иначе будет нечего искать)&quot;)) {
		TextRange.pasteHTML(&#039;&lt;span id=&quot;idFound&quot;&gt;новый текст, на который будут заменены все вхождения&lt;/span&gt;&#039;);
		TextRange.collapse(false);
	}
}</code></pre></div><p> Подробности хорошо расписаны <a href="https://learn.javascript.ru/range-textrange-selection">тут</a>. Но делать так я бы не советовал. Гораздо проще (быстрее, надежнее,...) весь html текст, который предназначен для замены, заключить в теги с идентификатором id и менять его c innerHTML.</p>]]></content>
			<author>
				<name><![CDATA[mozers]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=4112</uri>
			</author>
			<updated>2017-12-04T11:24:52Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=121938#p121938</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[JS: pasteHTML между элементами]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=121928#p121928" />
			<content type="html"><![CDATA[<p>Хочется вставить код <strong>между</strong> элементами. Не могу понять как в IE 8 расположить TextRange именно между элементами.</p><p>Например было:<br /></p><div class="codebox"><pre><code>&lt;span id=&#039;Ref1&#039;&gt;&lt;/span&gt;нынешний код или пусто&lt;span id=&#039;Ref2&#039;&gt;&lt;/span&gt;</code></pre></div><p>стало:<br /></p><div class="codebox"><pre><code>&lt;span id=&#039;Ref1&#039;&gt;&lt;/span&gt;мой новый код или стираю старый&lt;span id=&#039;Ref2&#039;&gt;&lt;/span&gt;</code></pre></div>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2017-12-03T20:09:47Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=121928#p121928</id>
		</entry>
</feed>
