 
			
				05.04.2013, 14:26
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 04.04.2013 
					
					
					
						Сообщений: 9
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от cyber
			 
		
	 | 
 
	
		molnij, как минимум когда читаешь такой код хочется по лицу дать. 
Прочитайте эту статью http://learn.javascript.ru/introduction-browser-events 
nikita.mmf, и причем тут свойства или в данном топике речь идет о событиях и почему лучше использовать свойство.
	 | 
 
	
 
 Читал статью. Узнал оттуда:
 
	
 
	| 
		
			 Цитата: 
		
	 | 
 
	
		Эти два примера кода работают одинаково: 
Только HTML: <input type="button" onclick="alert('Клик!')" value="Кнопка"/> 
HTML + JS: document.getElementById('button').onclick = function() {alert('Клик!'); }
	 | 
 
	
 
 Вопрос остался. Почему не работает и откуда так много заглавных букв в "НЕ ВЕШАЙ ОБРАБОТЧИКИ ЧЕРЕЗ АТРИБУТЫ!!!"
 
Единственное упоминание использования не-атрибута обнаружено в фразе 
"Используйте свойство, а не атрибут. Так неверно: elem.setAttribute('onclick', func)."  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				05.04.2013, 14:30
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 I am Student 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 17.12.2011 
					
					
					
						Сообщений: 4,415
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от molnij
			
		
	 | 
 
	
		Единственное упоминание использования не-атрибута обнаружено в фразе 
"Используйте свойство, а не атрибут. Так неверно: elem.setAttribute('onclick', func)."
	 | 
 
	
 
 ниже не зря было написано 
 
	
 
	| 
		
			 Цитата: 
		
	 | 
 
	
		Как вы думаете, почему? 
Раскрыть ответ
	 | 
 
	
 
 
	
 
	| 
		
			 Цитата: 
		
	 | 
 
	
		Значением атрибута может быть только строка. Любое другое значение преобразуется в строку. 
 
Функция в строчном виде обычно даёт свой код: "function() { alert(1) }". 
 
Итак, атрибут присвоен. Теперь браузер создаст обработчик с телом из этой строки: 
document.body.onclick = function() { 
  function() { alert(1) }
}
 
 
Этот код попросту некорректен с точки зрения JavaScript. Локальная функция объявлена без имени — отсюда и ошибка.
	 | 
 
	
 
 П.с в общем видно как внимательно вы читали...  
		
	
		
		
		
		
		
			
				__________________ 
				
	
 
	| 
		
			 Цитата: 
		
	 | 
 
	| 
		Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
	 | 
 
	
 
 
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				05.04.2013, 14:38
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 04.04.2013 
					
					
					
						Сообщений: 9
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от cyber
			 
		
	 | 
 
	
		ниже не зря было написано  
... 
П.с в общем видно как внимательно вы читали...
	 | 
 
	
 
 Так я ведь не объявляю функцию для обработчика, т.е. не пишу  
<div onclick="function(){alert('1');}> 
Код генерируется в виде <div onclick="alert('1')">  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				05.04.2013, 14:39
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 I am Student 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 17.12.2011 
					
					
					
						Сообщений: 4,415
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 molnij, дайте ссылку на страницу где не работает. 
		
	
		
		
		
		
		
			
				__________________ 
				
	
 
	| 
		
			 Цитата: 
		
	 | 
 
	| 
		Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
	 | 
 
	
 
 
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				05.04.2013, 14:49
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 04.04.2013 
					
					
					
						Сообщений: 9
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 система внутреннего пользования, наружу выхода просто не имеет 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				05.04.2013, 14:50
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 I am Student 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 17.12.2011 
					
					
					
						Сообщений: 4,415
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 molnij,ок, тогда кусок кода который не работает. 
		
	
		
		
		
		
		
			
				__________________ 
				
	
 
	| 
		
			 Цитата: 
		
	 | 
 
	| 
		Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
	 | 
 
	
 
 
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				05.04.2013, 14:53
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 04.04.2013 
					
					
					
						Сообщений: 9
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 cyber, хорошо, чуть позже, когда доступ на машину будет, скопирую код прямо из IE 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				05.04.2013, 19:30
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 04.04.2013 
					
					
					
						Сообщений: 9
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Код элемента в окне отладки IE 
<a class="btn btn-small btn btn-success" onclick="CreateKPIValues()" href="#"> 
 
В разделе "Динамические сценарии" 
 
 function CreateKPIValues() { 	var fields = {          ProjectId: Asyst.Workspace.currentForm.Data.ProjectId     }; 	Asyst.Workspace.openEntityDialog("KPIValues", "Новый KPI проекта. Значения", null, function () { Asyst.Workspace.currentForm.Reset(); }, fields); }  
 
Если нажимать на <a> - ничего не будет происходить. 
 
Встаю в окне отладки IE на обработчик onclick и добавляю пробел между скобками вызова функции: 
<a class="btn btn-small btn btn-success" onclick="CreateKPIValues( )" href="#"> 
Все начинает работать. 
 
Причем, повторюсь, всё нормально в IE9, chrome, ff, и части IE10. И лишь на паре компов происходит эта ерунда. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				05.04.2013, 21:10
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 I am Student 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 17.12.2011 
					
					
					
						Сообщений: 4,415
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		molnij, хм, довольно странно,  
<зануда> 
после вызова функции нужно ставить точку с запятой 
 <зануда/>
 
	
 
	| 
		
			Сообщение от molnij
			
		
	 | 
 
	| 
		Встаю в окне отладки IE на обработчик onclick и добавляю пробел между скобками вызова функции:
	 | 
 
	
 
 wtf?  
Вам нужно найти ошибку, используйте консоль , тогда я смогу хоть что то сделать.
 
	
 
	| 
		
			Сообщение от molnij
			
		
	 | 
 
	| 
		Если нажимать на <a> - ничего не будет происходить.
	 | 
 
	
 
 так как  href = "#" по ссылке не перейдет, а если нечего не происходит значить где то в скрипте возникло исключение..  
		
	
		
		
		
		
		
			
				__________________ 
				
	
 
	| 
		
			 Цитата: 
		
	 | 
 
	| 
		Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
	 | 
 
	
 
 
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				05.04.2013, 21:34
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 04.04.2013 
					
					
					
						Сообщений: 9
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от cyber
			 
		
	 | 
 
	
		molnij, хм, довольно странно,  
<зануда> 
после вызова функции нужно ставить точку с запятой 
 <зануда/>
	 | 
 
	
 
 Справедливо.
 
	
 
	
		
			Сообщение от cyber
			 
		
	 | 
 
	| 
		wtf? 
	 | 
 
	
 
 Дык это самое важное. Я писал в первом сообщении - если я хоть как-то меняю содержимое onclick в developer tools IE на закладке HTML(т.е. не перегружая страницу, просто налету), то все начинает работать. 
Было onclick="CreateKPIValues()" стало onclick="CreateKPIValues( )". Внутри скобок в вызове функции добавился пробел. Все заработало. Кстати, пробовал добавлять точку-с-запятой после функции - тоже начинало работать.
 
	
 
	
		
			Сообщение от cyber
			 
		
	 | 
 
	| 
		так как  href = "#" по ссылке не перейдет, а если нечего не происходит значить где то в скрипте возникло исключение..
	 | 
 
	
 
 До скрипта дело просто не доходит. Брекпоинт поставленный на скрипт не активируется. Пока не исправишь что-нибудь, как уже написал выше, после этого и брекпоинт активируется и код нормально выполняется.
 
Правда у меня уже подозрения, что это какая-то косячная версия IE попалась, что задачу, впрочем, не облегчает..  
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |