Проблемы с onclick
Здравствуйте, ответьте, пожалуйста, на вопрос.
Почему не работает onclick? html страницы: <!DOCTYPE html> <html> <head> <title>Onclick</title> </head> <body> </body> </html> js-код, который будет воспроизводить GreaseMonkey: document.getElementsByTagName('body')[0].innerHTML='<div></div>'; document.getElementsByTagName('body')[0].getElementsByTagName('div')[0].innerHTML='<div></div>'; document.getElementsByTagName('body')[0].getElementsByTagName('div')[0].getElementsByTagName('div')[0].innerHTML='<a>Click</a>'; document.getElementsByTagName('body')[0].getElementsByTagName('div')[0].getElementsByTagName('div')[0].getElementsByTagName('a')[0].onclick=function() {document.getElementsByTagName('a')[0].innerHTML+='!';} Заранее спасибо. |
В GreaseMonkey запрещено добавление обработчика через свойство
x.onclick = function(){}. Вместо этого нужно использовать x.addEventListener('click', function(){}, false) P.S. document.getElementsByTagName('body')[0].innerHTML='<div><div><a>Click</a></div></div>'; |
Цитата:
document.getElementsByClassName('main')[0].innerHTML+='<div class="line"></div><div id="script_foot"><a href="javascript://">Настройки</a></div>'; document.getElementById('script_foot').getElementsByTagName('a')[0].onclick=function(){script_option();window.scrollTo(0,0);} Цитата:
Меня больше интересует почему в одних случаях событие срабатывает, а в других нет? |
Неужели ответа не будет?(
|
Я тебе уже ответил. Onclick и не должен работать. Почему работает во втором случае - другой вопрос.
|
Aetae,
addEventListener так же не работает. |
Nexus,
Имхо на скок помню проблемными были общения именно с тегами <a> какая то одна из моих закладок http://softlakecity.ru/browsers/firefox/greasemonkey - может что полезно... |
Deff,
менял "<a></a>" на "<z></z>", "<span></span>" и т.п., ничего не вышло, событие не происходит. |
Nexus,
А поясните задачу... мож иными средствами можно проще решить? |
Deff, Мне нужно сделать "настройки скрипта".
На странице скриптом создается ссылка и блок: <a href="javascript://" id="option_open">Option</a> <div style="display:none;" class="script_block"> <div class="script_block_head"> <div class="script_block_head_title"></div> <div class="script_block_head_close">Х</div> </div> <div class="script_block_body"></div> </div> Клик по #option_open, должен вызвать функцию, которая заполнит .script_block и поменяет его 'display' на ''. Функция заполняет .script_block_body этим: <div class="script_block_body"> <div class="script_module_setting"> <span class="script_tooltip">?</span> <!-- тут написано, что произвойдет при клике по одной из ссылок //--> <div> <a href="javascript://">1</a> <!-- При клике по ссылке, значение переменной, описанной в скрипте, должно измениться, что изменит поведения скрипта //--> <a href="javascript://">2</a> <a href="javascript://">3</a> </div> </div> <div class="script_module_setting"></div> <div class="script_module_setting"></div> </div> |
Nexus,
Не, чуток не отсель 1. Почему GreaseMonkey: , а не bookmarklet , к примеру ? или просто скрипт на странице ? |
Deff, у меня нет доступа к изменяемой странице, а произвести определенные действия со страницей нужно, поэтому GM.
|
Nexus,
bookmarklet тоже это может сделать http://ru.wikipedia.org/wiki/Букмарклет Можно вставить страницу фреймом на свою страницу и все это открыть через анонимайзер, тогда скрипты на вашей странице будут работать с фреймом как с собственным |
Deff, скрипт работает с несколькими страницами одного сайта, поэтому большинство переменных записываются в gm api (GM_setValue, GM_getValue).
|
Deff, "bookmarklet" в общем мне не подходит.
|
Цитата:
Пример установки библиотеки на чужой сайт через анонимайзер(она может быть произвольной, в том числе и Вашим АPI, библиотека автоустанавливается по новой и при переходе по ссылкам фрейма) .. и считывание контента...(правда с программными кликами - тоже проблемы, - на анонимайзерах есть какая-никакая защита, но мы можем навесить обработчики реального клика на элементы чужого сайта на странице своего ресурса ( http://premod.mybb.ru/pages/frame00 ) ставим такой код <script> function TestLibFrame() { window.docThis = frame1.parent.document; window.$$ = frame1.jQuery; var str = 'Запускаем jQuery на странице, ранее бывшей без библиотеки:'; alert(str +'\n\n' + $$("html").html()) } function Funk0(aa) { var a='Cтавим javascript - библиотеку во фрейм' var iframe = aa var iframeDoc = iframe.contentWindow.document; var b = iframeDoc.createElement('div'); b.innerHTML=a; iframeDoc.body.appendChild(b); var s = iframeDoc.createElement('script'); s.setAttribute("type","text/javascript"); s.src = "http://yandex.st/jquery/1.4.4/jquery.min.js"; s.onload = TestLibFrame; b.appendChild(s); } </script> <iframe width=100% height=1800 src="http://javascript.ru/forum/" name=frame1 onload="Funk0(this)"></iframe> |
Deff, а если этой страницей анонимайзера одновременно будет пользоваться несколько человек, их IP-адреса будут одинаковыми?
|
Цитата:
Чуть поправил код пост 16, убрал лишнее. |
Цитата:
Спасибо за помощь, "bookmarklet" я вряд ли стану использовать, по крайней мере в ближайшем будущем. Буду пробовать воплотить задуманное другими способами. Всем спасибо за внимание, тему можно закрывать. |
Цитата:
|
Цитата:
|
Часовой пояс GMT +3, время: 02:58. |