![]() |
Модераторы: Sardar, Aliance |
![]() ![]() ![]() |
|
Lely |
|
||||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 5.9.2007 Репутация: нет Всего: нет |
Всем здравствуйте...
Никак не могу победить одну плохую вещь...яваскриптом генерирую всплывающее окно, его содержимое аяксом получаю от сервера...записываю содержимое для проверки в отдельный файл... вот в этом проверочном файле яваскрипт работает...а во всплывающем окне нет ![]() всплывающее окно
вызываемый яваскрипт
помогите пожалуйста...всю голову уже сломала... |
||||
|
|||||
Amphiluke |
|
|||
![]() ☽ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1253 Регистрация: 26.8.2009 Репутация: 35 Всего: 112 |
Вот самое важное и потерялось. ![]() Надо взглянуть на код, открывающий новое окно и пишущий содержимое в него. Относительный путь к скрипту "my.js" соответствует ли расположению документа, открываемого в новом окне? Добавлено через 2 минуты и 12 секунд Да. Еще хотелось бы поконкретнее про ошибку, а именно что пишется в консоль ошибок. |
|||
|
||||
Lely |
|
||||||||||||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 5.9.2007 Репутация: нет Всего: нет |
он очень огромный, дважды взывающий к аяксу (один раз за содержимым окна, второй раз за картинкой крестика закрытия этого окна)...поэтому вкратце основные моменты...
вроде да...все задаю просто от корня сайта...
тут самое интересное...у мозилы вообще ошибок нет...упрощенный мой код после запуска отладчика работает там замечательно...а вот мой самодельный визивиг, подгружаемый в это окно работает не очень, но все равно лучше, чем во всех остальных браузерах - кнопки работают (т.е. скрипт подключается и функционирует...айфрайм некликабельный и нерабочий вообще ![]() в опере мой упрощенный скриптик выдает ошибку при клике
причем это он выдает у меня уже даже при вот таком варианте скрипта, прописанном прямо во всплывающем этом окне
соответственно тут тоже мой самодельный визивиг отказывается работать...но тут у него не работают кнопки...выдавая ошибки при кликах полностью аналогичные приведенной выше...+ айфреим тоже полностью нерабочий... ну а в ИЕ все также как в опере...только ошибкой выдает при клике- "Предполагается наличие объекта" |
||||||||||||
|
|||||||||||||
bazzjr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 27.12.2007 Где: Россия, Пермь Репутация: нет Всего: 6 |
Проблемы в синтаксисе кода JS. Как вариант стоит попробовать отдельно создать то самое окно(DIV) и в него добавлять все что нужно – eval(ajaxHTML);
Это сообщение отредактировал(а) bazzjr - 2.8.2010, 13:38 |
|||
|
||||
Lely |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 5.9.2007 Репутация: нет Всего: нет |
bazzjr, а как понять отдельно?...отдельную функцию для этого сделать, исползующую eval?
|
|||
|
||||
bazzjr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 27.12.2007 Где: Россия, Пермь Репутация: нет Всего: 6 |
var divPop = document.createElement("DIV");
divPop.id = 'popUpDiv'; Вместо createElement("DIV"), создать заранее этот div var ajaxHTML = request.responseText; divPop.innerHTML = ajaxHTML; Вместо этой конструкции прописать var ajaxHTML = request.responseText; eval(ajaxHTML); |
|||
|
||||
Lely |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 5.9.2007 Репутация: нет Всего: нет |
поняла...способ может и рабочий...но мне никак не подходит - создаваться всегда должны разные divы...причем создаваться именно с использованием аякса... ![]() разве что только отдельно передавать аяксом нтмл...потом отдельно брать яваскрипт и его eval...как вы думаете это поможет?...ведь там в нтмле еще будут всякие onClick=" |
|||
|
||||
Lely |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 5.9.2007 Репутация: нет Всего: нет |
вот...я попробовала...так тоже не работает(((
все тоже самое - не работает с той же ошибкой ![]() |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
поиск в гугле минуты за 2 вывел вот на такой рессурс . imho - доступно.
Чтоб не возится с такими проблемами - рекомендуется использовать фреймворки. Вот последний комментарий в документации по фунции load. На всякий случай... -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
Lely |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 5.9.2007 Репутация: нет Всего: нет |
ksnk, ух ты...спасибо за ссылочку...сейчас попробую...
Добавлено через 10 минут и 30 секунд пример с алертом заработал...а вот с неработающим во всплывающем окне айфреймом непонятки ![]() |
|||
|
||||
Lely |
|
||||||||||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 5.9.2007 Репутация: нет Всего: нет |
выдает такие ошибки: ИЕ
Опера
Мозила
iframe определяю в самом начале скрипта так
подскажите, в чем ошибка? |
||||||||||
|
|||||||||||
bazzjr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 27.12.2007 Где: Россия, Пермь Репутация: нет Всего: 6 |
Lely, вы не правильно используете eval(), вместо " нужно ставить одинарные кавычки ' – 'alert('Hey');function myf(str){alert(str);}'
Я точно не уверен, но вы хотите исполнять функции, просто внедрив их посредством innerHTML. Если я не ошибаюсь, таким образом код JS не будет исполнятся если его внедрить innerHTML, а будет исполнятся лишь посредством eval(). Пример: <div id="a1"></div> <script> var ev = 'alert("!!!");function myf(str){alert(str)};'; document.getElementById('a1').innerHTML = eval(ev); myf('str'); //document.getElementById('a1').innerHTML = ev; </script> <input type="button" onclick="myf('str');" value="press" /> В вашем случае вы создаете контейнер div с JS кодом(т.е. HTML и JS код в одном флаконе), и потом все это внедряете innerHTML, так работать не будет. Нужно "разделяй и властвуй" ![]() Надеюсь понятно объяснил... |
|||
|
||||
Lely |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 5.9.2007 Репутация: нет Всего: нет |
bazzjr, спасибо за ответы...но я с этим уже разобралась...в рессурсе, который привел
ksnk написано что надо выбирать яваскрипт из ответа и создавать элемент <script> на странице...я так и написала
непонятно теперь только что делать с айфреймом...и почему он с одним и тем же кодом просто на страничке работает, а во всплывающем окне нет ![]() |
|||
|
||||
bazzjr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 27.12.2007 Где: Россия, Пермь Репутация: нет Всего: 6 |
Возможно в iFrame не указан идентификатор?
А для чего iFrame? Что значит "на страничке работает, а во всплывающем окне нет"? |
|||
|
||||
Amphiluke |
|
||||||
![]() ☽ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1253 Регистрация: 26.8.2009 Репутация: 35 Всего: 112 |
Этот код выполняется непосредственно на «верхнем» уровне, т.е. вне всяких функций? Или он выполняется по событию load объекта window? Или по какому-то иному событию? В любом случае, получается, что к моменту выполнения этого кода объект с id="edit" не существует. Если код, объявляющий переменную iframe, выполняется на «верхнем» уровне, то необходимо, чтобы объект <script>, содержащий этот код, располагался после объекта с id="edit" в дереве DOM. (Можно просто document.body.appendChild("этот_объект_script")). Ну и поскольку всё содержимое грузится в окно AJAX'ом, то, конечно, скрипт и по хронологии должен подгружаться после HTML-контента. Вообще, конечно, можно поступить по-простому и всякий раз перед тем как в какой-то функции начинать работать с переменной iframe, проверять, а не null ли она. Если null, то инициализировать. Тогда этот код можно вынести в отдельную функцию
и перед обращением к iframe делать проверку
Добавлено через 4 минуты и 9 секунд Судя по ключевому слову var перед именем переменной iframe, это всё-таки делается в коде верхнего уровня, по всей видимости. |
||||||
|
|||||||
![]() ![]() ![]() |
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |