<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; JavaScript (браузерный)]]></title>
		<link>http://forum.script-coding.com/index.php</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;fid=21&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние темы раздела «Серый форум».]]></description>
		<lastBuildDate>Sun, 30 Jan 2022 06:22:55 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[JS: Поиск и запуск кода в браузере]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?id=16916&amp;action=new</link>
			<description><![CDATA[<p>Доброго дня! <br />Подскажите новичку, как в браузере (например хром) найти запускаемый код?<br />Например есть на странице кнопка, при её нажатии как я понимаю запускается функция, которая подгружает в форму актуальные данные с сервера, это не перезагружает страницу и не меняет её адрес. <br />Я вызываю на этой кнопке меню и выбираю &quot;Просмотреть код&quot;, вижу html тэги этого элемента, в них не указаны обработчики. В итоге надо понять какую функцию вызывает клик по элементу, и желательно вставить в неё свой alert для просмотра запроса и ответа сервера.</p>]]></description>
			<author><![CDATA[null@example.com (fkhlamingo)]]></author>
			<pubDate>Sun, 30 Jan 2022 06:22:55 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?id=16916&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[JS: Как правильно поменять функцию]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?id=16733&amp;action=new</link>
			<description><![CDATA[<p>Здравствуйте!<br />Подскажите как правильно подставить другую функцию (другой js код) в <strong><span class="bbu">code</span></strong></p><div class="codebox"><pre><code>return window._setTimeout(code,delay);</code></pre></div><p>Тут перехват запущенного setTimeout</p><div class="codebox"><pre><code>window._setTimeout=window.setTimeout;
window.setTimeout=function(code,delay){
     return window._setTimeout(code,delay);
};</code></pre></div><p>Спасибо</p>]]></description>
			<author><![CDATA[null@example.com (pmailer1976)]]></author>
			<pubDate>Fri, 19 Nov 2021 12:48:54 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?id=16733&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[JS: Обработка ошибок]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?id=16468&amp;action=new</link>
			<description><![CDATA[<p>Доброго времени суток. </p><p>У меня вот какой вопрос: &quot;Допустим ваш скрипт выполняет алгоритм, согласно вашему плану. Вы обработали спорные моменты, которые обнаружили в процессе. И тут внезапно появляется новая ситуация. Что-то, чего заранее знать нельзя. Например на сайте изменились названия элементов или появилось какой-то новое окошко. Т.е. ошибки как таковой в js нет, но возвращаемые данные уже другие. Какие есть способы разрешения таких ситуаций?&quot; </p><p>У меня появилось новое окошко, я обработал конкретно &quot;это&quot; окошко. Но если отдельно обрабатывать каждую переменную или &quot;возможную ситуацию&quot; - это же слишком громоздко и как-то не правильно? Может есть какой-то способ, который объяснит скрипту что нужно делать, если мы отклонились от нашего плана. </p><p><a href="https://imgbb.com/"><span class="postimg"><img src="https://i.ibb.co/1r1Q6Tr/session.png" alt="https://i.ibb.co/1r1Q6Tr/session.png" /></span></a></p><p>Буду рад какой-нибудь теории, если она есть.</p>]]></description>
			<author><![CDATA[null@example.com (Botsy)]]></author>
			<pubDate>Fri, 02 Jul 2021 00:59:10 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?id=16468&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[JS: Input Value]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?id=16459&amp;action=new</link>
			<description><![CDATA[<p>На сайте интернет магазина &quot;dns&quot;, оформляя заказ надо вводить данные <a href="https://www.dns-shop.ru/checkout/">https://www.dns-shop.ru/checkout/</a>. Обычно в форму получалось вписать значение получив id элемента и изменив value:<br /></p><div class="codebox"><pre><code>
document.querySelector(&quot;#ir-8a5cu&quot;).value = &quot;+7 505 555-55-55&quot;;
</code></pre></div><p>А тут оно вписывает значение, но только визуально, т.е. как бы и не вписывает на самом деле. После активации поля input, всё пропадает.<br /><a href="https://ibb.co/G35kV05"><span class="postimg"><img src="https://i.ibb.co/7N1VGX1/input.png" alt="https://i.ibb.co/7N1VGX1/input.png" /></span></a></p><p>Подскажите что не так?</p>]]></description>
			<author><![CDATA[null@example.com (Botsy)]]></author>
			<pubDate>Sun, 27 Jun 2021 18:13:52 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?id=16459&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[JS: Непонятная ошибка.]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?id=16297&amp;action=new</link>
			<description><![CDATA[<div class="codebox"><pre><code>function AUTOCOMPLETE() {
	let date = new Date(document.getElementById(&#039;DATE1&#039;).value);
	let month = date.getMonth()+1;
	let year = date.getFullYear();
	let sdate = document.getElementById(&#039;DATE2&#039;);
	let tdate = document.getElementById(&#039;DATE3&#039;);
	if (month&lt;10) {
		sdate.value = &#039;year-0month-01&#039;.replace(&#039;year&#039;, year-1).replace(&#039;month&#039;, month);
	} else {sdate.value = &#039;year-month-01&#039;.replace(&#039;year&#039;, year-1).replace(&#039;month&#039;, month);}
	if (month&lt;11) {
		tdate.value = &#039;year-0month-31&#039;.replace(&#039;year&#039;, year).replace(&#039;month&#039;, month-1);
	} else {tdate.value = &#039;year-month-31&#039;.replace(&#039;year&#039;, year).replace(&#039;month&#039;, month-1);}
	if (month==1) {
		month = 12;
		tdate.value = &#039;year-month-31&#039;.replace(&#039;year&#039;, year-1).replace(&#039;month&#039;, month);
	}
}</code></pre></div><p>Вот такая функция. Происходит нечто странное: <br />Если в DATE1 вводить месяцы: 03, 05, 07, 10, 12, то DATE3 капризничает и выдаёт ошибку. Например:<br /></p><div class="codebox"><pre><code>The specified value &quot;2021-06-31&quot; does not conform to the required format, &quot;yyyy-MM-dd&quot;.</code></pre></div><p>Скажите, пожалуйста, как исправить?</p>]]></description>
			<author><![CDATA[null@example.com (SuBrex)]]></author>
			<pubDate>Wed, 28 Apr 2021 17:33:43 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?id=16297&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[JS: Что за ошибка]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?id=16093&amp;action=new</link>
			<description><![CDATA[<p>[Exception... &quot;File error: Corrupted&quot; nsresult: &quot;0x8052000b (NS_ERROR_FILE_CORRUPTED)&quot; location: &quot;JS frame :: https://st1-20.vk.com/js/cmodules/web/imn.90c4df81781398ca21f1.js?6ee863a30f9ebf8975156057251a986a :: .V1UX/window.IM.init :: line 1&quot; data: no]</p>]]></description>
			<author><![CDATA[null@example.com (Lolykroly)]]></author>
			<pubDate>Tue, 16 Feb 2021 15:07:20 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?id=16093&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[JS: Цикл с переменными и массив]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?id=16041&amp;action=new</link>
			<description><![CDATA[<p>Доброго времени суток.<br />По совету, начал переписывать определенный участок кода с ahk, полностью на JS, ибо, возможно кривая работа кода связана именно с этим.<br />Возникли проблемы (как обычно <img src="//forum.script-coding.com/img/smilies/big_smile.png" width="15" height="15" />). <br />Собственно, суть скрипта (ЮТУБ): <br /></p><ul><li><p>отправил &quot;запрос 1&quot; в строку поиска</p></li><li><p>нажал на кнопку поиска</p></li><li><p>идет поиск на странице по названию канала</p></li><li><p>клик по картинке видоса</p></li><li><p>если не нашел канал - скролл (до победного)</p></li><li><p>далее уже идет запрос 2 и всё пошло по кругу</p></li></ul><p>Красиво всё расписано, но работает через жопу <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /><br />Отдельно всё протестировано - и вводит запрос, и ищет и скроллит (если нужно).<br />Как только пытаюсь соединить всё в 1 скрипт - начинаются проблемы.<br />В данном ниже примере, проблема в том, что после ввода &quot;запрос1&quot; скрипт ступорится и ничего не делает.<br />Также иногда он начинает скроллить - даже не введя запрос, и на этом также - финиш.<br /><strong>Прошу помощи...</strong><br /></p><div class="codebox"><pre><code>let zaprosi = [&quot;Запрос1&quot;, &quot;Запрос2&quot;, &quot;Запрос3&quot;]


const delay = (t) =&gt;new Promise (res =&gt; setTimeout (res, t));

const findAndClick = async (channelName, td) =&gt; {
	while (true) {
		const blocks = Array.from(document.querySelectorAll(&#039;div#channel-info&#039;));
 
		let elem = blocks.find((item) =&gt; item.innerText.trim().toLowerCase() == channelName.toLowerCase())
 
		if (elem) {
			elem.parentNode.parentNode.querySelector(&#039;a#thumbnail&#039;).click();
			return;
		} else {
			window.scrollBy(0, 5500);
			await delay (td);
		}
	}
}
 
;(async function () {
	for (const zap of zaprosi) {
		document.querySelector(&#039;input#search&#039;).value = zap;
		document.querySelector(&#039;button#search-icon-legacy&#039;).click();
		await findAndClick(&#039;Название канала&#039;, 3000)
	}
})()</code></pre></div><p>Оригинальные (не изнасилованные мною) части кода:<br />Ввод запроса и клик:<br /></p><div class="codebox"><pre><code>document.querySelector(&#039;input#search&#039;).value =&#039;ЗАПРОСЫ ИЗ МАССИВА ПО ОЧЕРЕДИ&#039;;
document.querySelector(&#039;button#search-icon-legacy&#039;).click();</code></pre></div><p>Поиск канала и клик по нужному видосу <span class="bbu">вариант 1</span>:<br /></p><div class="codebox"><pre><code>const findAndClick = (channelName, delay) =&gt; {
  const blocks = Array.from(document.querySelectorAll(&#039;div#channel-info&#039;));

  let elem = blocks.find((item) =&gt; item.innerText.trim().toLowerCase() == channelName.toLowerCase())

  if (elem) {
    elem.parentNode.parentNode.querySelector(&#039;a#thumbnail&#039;).click();
  } else {
    window.scrollBy(0, 5500)

    setTimeout(() =&gt; {
      findAndClick(channelName, delay)
    }, delay)
  }
}

findAndClick(&#039;НАЗВАНИЕ КАНАЛА&#039;, 3000)</code></pre></div><p>Поиск канала и клик по нужному видосу <span class="bbu">вариант 2</span>:<br /></p><div class="codebox"><pre><code>((channelName) =&gt; {
   function searchCannel(channelName) {
      const coll = document.querySelectorAll(&#039;div#channel-info&#039;);
      let elem = &#039;&#039;;
      for (let item of coll) {
         if ( item.innerText == channelName &amp;&amp; (elem = item) )
            break;
      };
      return elem;
   }
   let channel = &#039;&#039;, allElemsCount = 0, counter = 0;
   let timerId = setInterval(() =&gt; {
      if ( (channel = searchCannel(channelName)) || counter == 5 ) {
         clearInterval(timerId);
         if (channel)
            channel.parentNode.parentNode.querySelector(&#039;a#thumbnail&#039;).click();
         else
            alert(&#039;Not found!&#039;);
      }
      else {
         let newAllElemsCount = document.querySelectorAll(&#039;a#thumbnail&#039;).length;
         if (!(newAllElemsCount &gt; allElemsCount))
            counter++;
         else {
            allElemsCount = newAllElemsCount;
            window.scrollTo(0, document.querySelector(&#039;ytd-app&#039;).scrollHeight);
         }
      }
   }, 2000);
})(&#039;НАЗВАНИЕ КАНАЛА&#039;);
)</code></pre></div><p>Ну, массив с запросами, понятно: <br /></p><div class="codebox"><pre><code>let zaprosi = [&quot;Запрос1&quot;, &quot;Запрос2&quot;, &quot;Запрос3&quot;]</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Michael)]]></author>
			<pubDate>Tue, 02 Feb 2021 09:18:44 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?id=16041&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[JS: Добавить автоскролл страницы, пока не найдет текст]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?id=16011&amp;action=new</link>
			<description><![CDATA[<p>Доброго времени суток.<br />Имеется такой скрипт (он внутри AHK скрипта, если это важно):<br /></p><div class="codebox"><pre><code>(
(() =&gt; {
   const coll = document.querySelectorAll(&#039;div#channel-info&#039;);
   let elem;
   for (let item of coll) {
      if ( item.innerText == &#039;StopGame.Ru&#039; &amp;&amp; (elem = item) )
         break;
   };
   if (elem)
      elem.parentNode.parentNode.querySelector(&#039;a#thumbnail&#039;).click();
   else
      alert(&#039;Не найдено!&#039;);
})();
)</code></pre></div><p>Его суть: ищет введенное название канала, затем кликает на первый найденный видос с этого канала, со страницы поиска Ютуба.<br />Проблема вот в чем: часто нужные каналы с видосами находятся снизу, а поиск выдает только первые 20 результатов. Соответственно, нужно скроллить страницу до того момента, пока он не найдет нужное мне совпадение. </p><p>Нашел вроде то, что мне нужно:<br /></p><div class="codebox"><pre><code>elem.scrollIntoView(top)</code></pre></div><p>Только как его запихнуть в основной скрипт, тот что выше, пока не понимаю. Прошу помощи...</p><p>UPDATE.<br />Построил ультра костыльный способ для вышеописанного средствами AHK.<br /></p><div class="codebox"><pre><code>page:=Chrome.GetPageByTitle(&quot;YouTube&quot;)
Loop 100
{
    Send {PgDn}  ; нажать клавишу
    Sleep 200  ; пауза в миллисекундах между нажатиями
}
Send {PgDn} ; отпустить клавишу</code></pre></div><p>По факту он работает, но далеко не всегда так, как нужно.</p><p><span class="bbu">Так что вопрос со вставкой бесконечного скролла до момента нахождения нужного канала, остается открытым. </span></p>]]></description>
			<author><![CDATA[null@example.com (Michael)]]></author>
			<pubDate>Fri, 22 Jan 2021 20:34:23 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?id=16011&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[JS: Добавить пробел в строку]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?id=15160&amp;action=new</link>
			<description><![CDATA[<p>Здравствуйте, товарищи, не ругайте сильно, что-то муть какая-то в гугле написана. Нужно к строке добавить два пробела в конце, подскажите пожалуйста:<br /></p><div class="codebox"><pre><code>
returnstr = &quot;123&quot;
spasesym = &quot;\x00&quot; ; пробовал и &quot; &quot; и &quot;\s&quot;, провобал и без переменной а напрямую
returnstr = &quot;&quot; + returnstr + &quot; @@...@&quot; + spasesym + &quot;&quot; + spasesym + &quot;&quot;
return HtmlService.createHtmlOutput(&quot;@@.@ &quot; + returnstr + &quot; @@..@.@&quot;);</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (belyankin12)]]></author>
			<pubDate>Sun, 02 Feb 2020 22:42:10 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?id=15160&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[JS: Двойные кавычки в JSON]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?id=15046&amp;action=new</link>
			<description><![CDATA[<p>Доброго дня.</p><p>Некий сайт при отправке XMLHttpRequest не возвращает responseJSON, а responseText такой вот:</p><p><strong>{&quot;World&quot; : &quot;Hello \&quot;Test&quot;}</strong></p><p>Как видите, проблема в кавычках. Само собой JSON.parse не работает.</p><p>javascript меня удивил<br /></p><div class="codebox"><pre><code>var j = &#039;{&quot;World&quot; : &quot;Hello &quot;Test&quot;}&#039;;
var k = &#039;{&quot;World&quot; : &quot;Hello \&quot;Test&quot;}&#039;;
console.log((j == k));
--&gt; true
</code></pre></div><p>Как победить?</p>]]></description>
			<author><![CDATA[null@example.com (DnsIs)]]></author>
			<pubDate>Fri, 01 Nov 2019 10:46:29 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?id=15046&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[Chrome / Поиск текста в dev tools, используя две фразы]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?id=14969&amp;action=new</link>
			<description><![CDATA[<p>Доброго времени суток.<br />Мне нужно найти строку во вкладке Network, в инструментах разработчика Chrome, используя при поиске, два (хотя бы) или больше совпадений.<br />Например, найти строку типа &quot;http://forum.script-coding.com/extensions/pan_private_chat/js/chat_smiles.js&quot;, путем вбивание в поиск (Ctrl+F) фраз: <br />&quot;http&quot; и &quot;chat_smiles&quot;.</p><p>Существует ли способ это реализовать?</p><p>Вопрос казалось бы делитантный и по идеи не должен иметь прямого отношения к JavaScript, но при этом я не смог нигде найти информацию об этом, что на русском, что на англ языках.</p>]]></description>
			<author><![CDATA[null@example.com (SeaVodikendu)]]></author>
			<pubDate>Sat, 14 Sep 2019 11:18:27 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?id=14969&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[JS: Как найти в каких переменных было значение ?]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?id=14807&amp;action=new</link>
			<description><![CDATA[<p>Здраствуйте.<br />В куках и хэдерах запросов при зарузке данных сайта есть какой-то непонятный id который генерится на стороне клиента (в браузере) и отправляется на сервер.<br />Нужно найти в каких переменных, функциях и объектах яваскрипт после загрузки страницы этот id появлялся.<br />Чем это можно сделать? Для Firefox в частности. В поиске ничего не нашел.<br />Спасибо заранее.</p>]]></description>
			<author><![CDATA[null@example.com (ReNzRv)]]></author>
			<pubDate>Wed, 29 May 2019 21:06:00 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?id=14807&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[JS: скрипт версия сайта для слабовидящих]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?id=14677&amp;action=new</link>
			<description><![CDATA[<p>Добрый день.<br />Подскажите, пожалуйста, скрипт для версии сайта для слабовидящих. спасибо.</p>]]></description>
			<author><![CDATA[null@example.com (artem.74)]]></author>
			<pubDate>Sat, 30 Mar 2019 13:27:01 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?id=14677&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[JS: Editable ComboBox]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?id=14600&amp;action=new</link>
			<description><![CDATA[<p>С праздником, мужики!</p><p>Обычно в поле с комбобоксом можно вводить данные. Всеми это воспринимается как само собой разумеющееся.<br />Реализация комбобокса для браузеров (с помощью &lt;SELECT&gt; и &lt;OPTION&gt;) не подразумевает ввод текста вручную.<br />Ну а если оно надо? - Тогда каждый идет своим путем. Вариантов в инете - предостаточно. Вот и я предлагаю свой.</p><p>Маленький код на чистом JS без всяких фреймворков, графических элементов и новомодных изысков HTM5.<br />По сути к обычному объекту SELECT добавлены несколько дополнительных свойств.</p><p>Создается комбобокс командой<br /></p><div class="codebox"><pre><code>new ComboBox(idCell, &#039;idCB&#039;, &#039;150px&#039;); </code></pre></div><p><span style="color: blue">idCell</span> - id элемента куда он будет вставляться;<br /><span style="color: blue">&#039;idCB&#039;</span> - строка, содержащая id будущего комбобокса;<br /><span style="color: blue">&#039;150px&#039;</span> - строка, содержащая ширину будущего комбобокса (если данный параметр отсутствует, то комбобокс займет 100% ширины родителя);</p><p>Помимо привычных свойств и методов, присущих любому элементу SELECT, в наш комбобокс добавлены еще четыре:<br /><span style="color: blue">setText(&#039;mytext&#039;)</span> - установка текста в поле ввода (того, что можно ввести вручную);<br /><span style="color: blue">getText()</span> - получение текста из поля ввода;<br /><span style="color: blue">addOptions(array)</span> - добавление новых пунктов в комбобокс (Добавляются только если такие пункты отсутствуют);<br /><span style="color: blue">getOptions()</span> - возвращает массив, содержащий список пунктов комбобокса.</p><p>Несколько замечаний:<br />1. Элемент в который подразумевается вставлять данный комбобокс должен иметь ширину, большую чем ширина комбобокса.<br />2. Данный комобокс создавался исключительно для IE (точнее - для HTA) и во всех IE6..IE11 смотрится вполне прилично. Попробовал в Chrom и Firefox - код четко работает и там, вот только дизайн - значительно хуже, но полагаю, желающие смогут это поправить.</p><p>Теперь, собственно, сам код с наглядным примером его использования:<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><div class="codebox"><pre><code>&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=utf-8&quot;&gt;
&lt;meta http-equiv=MSThemeCompatible content=yes&gt;
&lt;style type=&quot;text/css&quot;&gt;
	* {font:10pt verdana;}
	table {border-collapse:collapse;}
	table, td {border:1px solid green;}
	td {padding:4px 6px;}
&lt;/style&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
	// ComboBox с возможностью ручного ввода
	function oComboBox (oContainer, id, width) {
		var oSelect = document.createElement(&#039;SELECT&#039;);
		oSelect.id = id;
		oSelect.style.width = width || &#039;100%&#039;;
		oSelect.style.position = &#039;absolute&#039;;
		var oInput = document.createElement(&#039;INPUT&#039;);
		oInput.style.position = &#039;relative&#039;;
		oContainer.appendChild(oSelect);
		oContainer.appendChild(oInput);
		oSelect.style.top = oInput.offsetTop + &#039;px&#039;;
		oSelect.style.clip = &#039;rect(auto auto auto &#039; + (oSelect.offsetWidth - 20) + &#039;px)&#039;;
		oInput.style.width = oSelect.offsetWidth - 19 + &#039;px&#039;;
		oSelect.onchange = function(){oInput.value=this.options[this.selectedIndex].text; oInput.select();};

		// Установка текста в поле ввода
		oSelect.setText = function(text) {
			oSelect.selectedIndex = -1;
			for (var j=0; j&lt;oSelect.options.length; j++) {
				if (oSelect.options[j].text.toUpperCase() == text.toUpperCase()) oSelect.selectedIndex = j;
			}
			oInput.value = text;
		};

		// Получение текста в поле ввода
		oSelect.getText = function() {return oInput.value;};

		// Добавление новых пунктов в ComboBox (только если такие отсутствуют)
		oSelect.addOptions = function (aOptions) {
			function isOptionExist(text) {
				for (var j=0; j&lt;oSelect.options.length; j++) {
					if (oSelect.options[j].text.toUpperCase() == text.toUpperCase()) return true;
				}
			}
			for (var i=0; i&lt;aOptions.length; i++) {
				if (!isOptionExist(aOptions[i])) {
					var oOption = document.createElement(&quot;option&quot;);
					oOption.text = aOptions[i];
					oSelect.options.add(oOption);
					oSelect.selectedIndex = oSelect.options.length-1;
					oInput.value = oSelect.options[oSelect.options.length-1].text;
				}
			}
		};

		// Возвращает массив, содержащий список пунктов ComboBox
		oSelect.getOptions = function () {
			var aOptions = [];
			for (var j=0; j&lt;oSelect.options.length; j++) {
				aOptions.push(oSelect.options[j].text);
			}
			return aOptions;
		};

	}

	function Sample() {
		var o = new oComboBox(idCell, &#039;idCB&#039;, &#039;150px&#039;);
		idCB.addOptions([&#039;RED&#039;, &#039;GREEN&#039;, &#039;BLUE&#039;]);
		idCB.addOptions([&#039;yellow&#039;,  &#039;red&#039;, &#039;orange&#039;]);
		idCB.setText(&#039;Blue&#039;);
	}

&lt;/script&gt;
&lt;title&gt;Editable ComboBox&lt;/title&gt;
&lt;/head&gt;
&lt;body onload=&quot;Sample();&quot;&gt;
&lt;table&gt;
	&lt;tr&gt;
		&lt;td id=&quot;idCell&quot; style=&quot;width:200px;&quot;&gt;&lt;/td&gt;
		&lt;td&gt;new methods&lt;/td&gt;
		&lt;td&gt;
			&lt;input type=&quot;button&quot; value=&quot;setText(text)&quot; onclick=&quot;idCB.setText(&#039;crimson&#039;)&quot;&gt;
			&lt;input type=&quot;button&quot; value=&quot;getText()&quot; onclick=&quot;alert(idCB.getText())&quot;&gt;
			&lt;input type=&quot;button&quot; value=&quot;addOptions(array)&quot; onclick=&quot;idCB.addOptions([&#039;Violet&#039;,&#039;Silver&#039;])&quot;&gt;
			&lt;input type=&quot;button&quot; value=&quot;getOptions()&quot; onclick=&quot;alert(idCB.getOptions())&quot;&gt;
		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;&amp;nbsp;&lt;/td&gt;
		&lt;td&gt;built-in methods&lt;/td&gt;
		&lt;td&gt;
			&lt;input type=&quot;button&quot; value=&quot;selectedIndex&quot; onclick=&quot;alert(idCB.selectedIndex)&quot;&gt;
			&lt;input type=&quot;button&quot; value=&quot;outerHTML&quot; onclick=&quot;alert(idCB.outerHTML)&quot;&gt;
			&lt;input type=&quot;button&quot; value=&quot;change option text&quot; onclick=&quot;idCB.options[idCB.selectedIndex].text=&#039;New Text&#039;;&quot;&gt;
		&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre></div></div></div><p>Буду рад услышать любые конструктивные замечания и предложения (для того и выкладываю).</p>]]></description>
			<author><![CDATA[null@example.com (mozers)]]></author>
			<pubDate>Sat, 23 Feb 2019 14:42:28 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?id=14600&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[JS: Chrome_checked]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?id=14511&amp;action=new</link>
			<description><![CDATA[<p>Добрый день! Использую код в хроме, но почему то при кликах по другим элементам ли бо обновлении страницы checkBox.checked возвращается в исходное состояние. Заранее спасибо!<br /></p><div class="codebox"><pre><code>var i = 28;
var checkBox2 = document.getElementsByTagName(&quot;input&quot;)[11];
var checkBox3 = document.getElementsByTagName(&quot;input&quot;)[12];
var checkBox4 = document.getElementsByTagName(&quot;input&quot;)[13];

function clear () {
    if (i &lt;= 29) {
        document.getElementsByTagName(&quot;li&quot;)[i].click();
        i++;
    
        setTimeout(arguments.callee, 600);

if (checkBox2.checked = true ) {checkBox2.checked = false};
if (checkBox3.checked = true ) {checkBox3.checked = false}; 
if (checkBox4.checked = true ) {checkBox4.checked = false}; 

} else {
        alert(&#039;Готово!&#039;);
    } 
}clear();</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (inseption86)]]></author>
			<pubDate>Sat, 26 Jan 2019 10:51:47 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?id=14511&amp;action=new</guid>
		</item>
	</channel>
</rss>
