Почему объект "Кнопка" не видит соседнию функцию?
Это пользовательский скрипт (ФФ3.6). Создает клон кнопку. Когда её жмёшь, обработчик события onclick не видит "свою" функцию - появляется ошибка - PosilkaFlotika is not defined.
Эту функцию везде перемещал по скрипту. Здесь на сайте прочёл, что функции вида function PosilkaFlotika() { ....} считаются глобальными. Как её сделать видимой для кнопки? Или по другому: ХТМЛ объект не видит нужную ф-ю из скрипта пользователя. Помогите кто может, уже третий день парюсь... (function() { var unsafe = window; try {unsafe = unsafeWindow} catch (e) {} var $ = unsafe.$; var session = unsafe.session; if ( !$ ) return; try { function PosilkaFlotika() { sendShips(6, 2, 62, 12, 1, 1); }; var objButton = $('#menuTable li').eq(1).clone(true); objButton.find('.menu_icon').html(''); objButton.find('.menubutton') .removeClass('selected') .attr('href', '#') .attr('onclick', 'PosilkaFlotika(); return false') .attr('target', '_self') .find('.textlabel').html('Messaga : '); objButton.appendTo('#menuTable'); } catch (e) {} }) () |
function foo() { alert(true); } foo(); (function() { function foo(a) { alert(a); } foo(false); //а тут есть }()); foo(true); //нет такой функции в данной области видимости Читать тут |
function asd() { ......... /* function PosilkaFlotika() { sendShips(6, 2, 62, 12, 1, 1); }; */ .......... } asd() function PosilkaFlotika() { sendShips(6, 2, 62, 12, 1, 1); }; Так тоже undefined. Изначально весь код был рабочим - но когда я завернул sendShips() в функцию PosilkaFlotika() - пошли undefined. П.С. Все пользовательские скрипты подключены через аддон Greasemonkey, но он работает без проблем, может он влияет? |
Кто знает как добавить в обработчик события onclick прямой путь на ф-ю в скрипте пользователя?
|
el.onclick = a function a(){...} |
А с прямым путем к файлу как?
|
Опера видит var вне общей функции, но ф-ии не видит.
А ФФ не видит ни того, ни другого... Да блин....Обезъяны, лисы,...где люди делающие браузеры? Ау.js... |
Цитата:
function foo() { alert(true); } function bar() { foo(); } bar(); function bar(foo) { foo(); } bar(function(a) { alert(true); }); function foo() { alert(true); } function bar() { return function() { return function() { foo(); } } } bar()()(); |
Нашёл инфо - "А Greasemonkey принудительно заворачивает весь код в функцию:
(function() { некий_код; })()." Поэтому и блин! Кодер думает, что скрипт его просто подключен, а он ещё и обёрнут! :write: :cray: :-/ bar()()() - это не понятно, если коротко что это? |
Цитата:
javascript.ru/basic/closure одним словом, это ах***но !!! |
Часовой пояс GMT +3, время: 15:56. |