Почему объект "Кнопка" не видит соседнию функцию?
Это пользовательский скрипт (ФФ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, время: 19:48. |