Солянка JavaScript

В этом посте по мере моего узнавания будут появляться полезные функции и приемы работы с JavaScript. Если для вас это очевидные вещи, просто не читайте (:

Расширение обработчика onclick

Задача: в приложении имелась ссылка, сгенеренная perlом, со своими атрибутами и своим определенным onclick в <a....>. Мне нужно было вызвать еще одну функцию на клик по ссылке, перед ее собственным обработчиком, не меняя код генерации ссылки.

Решение: ссылку я обернула в span

<span id="mylink">
<a ...>Сама ссылка</a>
</span>

Далее в конце body в тегах <script> .. </script>, (или в обработчик onload) поместила функцию changeLinkOnclick()

function changeLinkOnclick () { 
	//Взяли все ссылки внутри спана с помощью prototype.js
	var mylink = \$('mylink').getElementsByTagName('a'); 
	//сохранили старый обработчик onclick
	var func = mylink[0].onclick;
	//проверка на всякий случай
	if(typeof(func ) == 'function'){ 
		//новый onclick
		mylink[0].onclick = function () { 
			//функция, которую хотели добавить
			saveScript();
			//вызов старого обработчика
			func.call(this);
		}
	}
	return false;	
}

Подключение js скрипта из другого скрипта

Задача: в нашем приложении на перле файлы скриптов подключаются специальным образом из определенной папочки. Мне потребовалось подключить еще один скрипт из другого места. Расширять старый механизм подключения нехорошо.

Решение: в нужном участке body в тегах <script> .. </script> вызвала функцию addJavascript('..../new.js', 'head').

function addJavascript(jsname, pos) {
	var where = document.getElementsByTagName(pos)[0];
	var s = document.createElement('script');
	s.setAttribute('type','text/javascript');
	s.setAttribute('src',jsname);
	where.appendChild(s);
}

При написании поста я неоднократно пользовалась инструментом подготовки кода к публикации (:

Теги: 

Добавить комментарий

Filtered HTML

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешённые HTML-теги: <a> <em> <i> <strong> <b> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd> <p> <br>
  • Строки и параграфы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.
CAPTCHA
CAPTCHA на основе изображений
Введите код с картинки