Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.07.2014, 19:25
Профессор
Отправить личное сообщение для Dimaz Посмотреть профиль Найти все сообщения от Dimaz
 
Регистрация: 25.12.2009
Сообщений: 222

Почему не работает функция в атрибуте onclick?
Почему не работает функция в атрибуте onclick?
<p onclick='say()'>bla bla bla</p>

function say(){
    alert("ok");
}

http://jsfiddle.net/8jkNJ/
Ответить с цитированием
  #2 (permalink)  
Старый 22.07.2014, 19:41
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Потому что то, что ты пишешь, оборачивается в функцию и вешается событием load. В левой панеле поменяй во втором селекте с "onLoad" на "No wrap".
Ответить с цитированием
  #3 (permalink)  
Старый 22.07.2014, 21:11
Профессор
Отправить личное сообщение для Dimaz Посмотреть профиль Найти все сообщения от Dimaz
 
Регистрация: 25.12.2009
Сообщений: 222

Сообщение от Sweet Посмотреть сообщение
Потому что то, что ты пишешь, оборачивается в функцию и вешается событием load. В левой панеле поменяй во втором селекте с "onLoad" на "No wrap".
Теперь работает, но только в jsfiddle. Я занимаюсь приложением для браузера. Мой скрипт интегрируется на сторонний сайт. Почему я не могу вызвать эту функцию?
Я вставляю элемент с атрибутом onclick на страницу с помощью innerHTML. Может в этом проблема?
Ответить с цитированием
  #4 (permalink)  
Старый 23.07.2014, 02:52
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Всё работает:
<div id="test"></div>

<script>
test.innerHTML = "<p onclick='say()'>bla bla bla</p>";

function say(){
    alert("ok");
}
</script>
Хз, что у вас за проблема.
Ответить с цитированием
  #5 (permalink)  
Старый 23.07.2014, 03:42
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,585

Сообщение от Dimaz Посмотреть сообщение
Я вставляю элемент с атрибутом onclick на страницу с помощью innerHTML. Может в этом проблема?
Да, именно в этом. Для безопасности ваши функции недоступны для вызова с самого сайта.(причина думаю очевидна)
Соответственно обрабочики надо добавлять вручную:
elem.onclick=say; //или
elem.addEventListener('click',say,false)
В geasemonkey есть ещё unsafeWindow и можно сделать так:
unsafeWindow.say=function(){/*...*/}
но это дырa в безопасности.
__________________
29375, 35
Ответить с цитированием
  #6 (permalink)  
Старый 23.07.2014, 15:40
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Все так нормально работает с addEventListener() и не надо никаких онкликов.
Ответить с цитированием
  #7 (permalink)  
Старый 23.07.2014, 15:43
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Вообще-то и в обычном скрипте если тупо добавить текст, в innerHTML, то не факт что онклик будет работать. Надо делать элемент, вешать на него объект - функцию, и аттачить в дом как таковой.

Для внедренных скриптов аналогично, но там принцип другой. Если это ваш элемент - то программируете его addEventListener;ом, а если чужой и надо по нему клацнуть, то тупо elem,click() или типа того.
Ответить с цитированием
  #8 (permalink)  
Старый 23.07.2014, 20:52
Профессор
Отправить личное сообщение для Dimaz Посмотреть профиль Найти все сообщения от Dimaz
 
Регистрация: 25.12.2009
Сообщений: 222

Понял. Всем спасибо за помощь.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему не работает на jQuery 1.4.4? pro10026 jQuery 13 06.03.2014 10:22
Почему не запускается функция? jeysmook jQuery 10 25.06.2013 09:30
Не пойму почему не работает код? Mukhtar Events/DOM/Window 4 29.04.2013 00:01
Почему не работает функция? Редактировать Isaac Общие вопросы Javascript 16 18.12.2012 16:22
Не работает onClick в IE ivan1 Events/DOM/Window 4 14.10.2011 20:55