Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ajax + динамическая подгрузка javascript, проблема при подгрузке контента 
:(
    Опции темы
skyboy
Дата 23.4.2007, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 10
Всего: 260



Цитата(polosatij @  22.4.2007,  22:41 Найти цитируемый пост)
угу.. тока не окон.. а перегружающихся div-ов  smile + к ним должна идти яваскрипт функциональность

Хм. smile тогда неясно, почему ты про коллизию имен говорил, если интерфейс и соотвествующие js-функции продумываются заранее. 
Впрочем, ответ уже был дан - да, удалять можно smile
Цитата(polosatij @  22.4.2007,  22:41 Найти цитируемый пост)
о.. крута.. за это зачёт

там же ошибка только. в первой строке надо либо
Код

var obj= {};

либо 
Код

var obj= new Object();

PM MAIL   Вверх
polosatij
Дата 23.4.2007, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: 1
Всего: 8



skyboy

я понял  smile 

ещё вот что.. ты не ответил на вопрос.. а как сделать лучше?  smile 

ещё вот что.. код, что посоветовали, не работает:

Код

    // load
    var scri= document.createElement('script');
    scri.type= 'text/javascript';
    scri.src= ' ';
    document.getElementsByTagName('meta')[0].appendChild(scri);
    scri.src= 'test.js';
    // _do(); // <-- do is not defined


а test.js, попробовал вот так:

Код

// _do();

function _do {
         alert('hi');
}


метода _do() не вызывается..  smile

Добавлено через 1 минуту и 29 секунд
Цитата(skyboy @  23.4.2007,  00:18 Найти цитируемый пост)
Впрочем, ответ уже был дан - да, удалять можно


хм.. а как из памяти удалить тогда? просто переправить .src у javascript-а?  smile хм.. неужели автоматом так получиться?  smile

Добавлено через 10 минут и 56 секунд


получилось так:

Код

    // load
    var scri= document.createElement('script');
    scri.type= 'text/javascript';
    scri.src= 'test.js';
        document.getElementsByTagName('meta')[0].appendChild(scri);

        // _do(); // ***
    // eval("_do();"); // ***


Код

_do();

function _do() {
         alert('hi');
}


однако такой код меня не устраивает..  smile  вызов функции _do(); должен происходить не в яваскрипте, а снаружи из контента! (я поставил в этом месте ***)


--------------------
PM   Вверх
skyboy
Дата 23.4.2007, 01:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 10
Всего: 260



Цитата(polosatij @  22.4.2007,  23:35 Найти цитируемый пост)
 вызов функции _do(); должен происходить не в яваскрипте, а снаружи из контента! (я поставил в этом месте ***) 

я так понимаю, проблема в том, что назначаешь события(onclick/onmouseover etc) с использованием js до того, как загрузишь и встроишь соответствующие js-файлы? 
ибо вот такое вот извращение работает и не жужжит:
Код

var button= document.createElement('button');
var scri= document.createElement('script');
scri.appendChild(document.createTextNode('alert("start!"); function foo() {alert("bar!");}'));
scri.type="text/javascript";
document.getElementsByTagName('body')[0].appendChild(scri);
scri.src=" ";
button.onclick= foo; // можно написать "button.onclick= function() {foo();}"  :crazy 
document.getElementsByTagName('body')[0].appendChild(button);

Как видишь, я указываю в обработчики функцию уже после её создания(после инициализации скрипта, включающие её). А у тебя, навернок, порядок создания обратный: сначала - элемент и попытка создания обработчика, потом уже - сам скрипт. Так?
PM MAIL   Вверх
polosatij
Дата 23.4.2007, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: 1
Всего: 8





skyboy

да.. ты прав.. поставил загрузку первой и всё вышло  smile терь понятно, почему она не стреляла (с)  smile 

но снова к вопросу о распределении JS и подгрузке AJAX.. как же сделать лучше, чтоб не нужно было постоянно куски тянуть? => ведь здесь ещё что получается.. юзер кликнул сюда, кликнул туда.. подгрузили всё.. терь он кликнул на то, что уже было загружено.. что получается, в JS нужно номер идентификационный прописывать, и спрашивать, были ли ты уже подгружен..  smile 


--------------------
PM   Вверх
skyboy
Дата 23.4.2007, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 10
Всего: 260



изврат: делай все на замыканиях.
то есть, вместо
Код

function foo()
{
 alert('bar');
 return 0;
}
btn.onclick = foo;

делай 
Код

btn.onclick = function() {
 alert('bar');
 return 0;
}

PM MAIL   Вверх
polosatij
Дата 23.4.2007, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 22.2.2004
Где: Stuttgart<-> ;Karlsruhe, Germany

Репутация: 1
Всего: 8



skyboy

хе-хе.. нет.. так не пойдёт..  smile 

мне всё равно надо подружать .js.. a если не подгружать, а писать прям в контент функции, то так не выйдет.. у меня не две строчки, а сотни и тысячи..  smile


--------------------
PM   Вверх
skyboy
Дата 23.4.2007, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 10
Всего: 260



ну, не знаю. значит, пиши функции, чтоб не было конфликта имен...
PM MAIL   Вверх
Alx
Дата 13.5.2007, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: 10
Всего: 78



skyboy
твой код в ИЕ вызывает ошибку - неожиданный вызов метода или обращение к свойству...
похоже к элементу script нельзя добавлять детей... innerHTML тоже не помогает...


--------------------
PM MAIL WWW ICQ   Вверх
linuxer
Дата 15.5.2007, 05:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 6.5.2007

Репутация: нет
Всего: нет



Цитата(polosatij @ 23.4.2007,  12:57)

но снова к вопросу о распределении JS и подгрузке AJAX.. как же сделать лучше, чтоб не нужно было постоянно куски тянуть? => ведь здесь ещё что получается.. юзер кликнул сюда, кликнул туда.. подгрузили всё.. терь он кликнул на то, что уже было загружено.. что получается, в JS нужно номер идентификационный прописывать, и спрашивать, были ли ты уже подгружен..  smile

Код

var loaded={};
function load(src){
  if(loaded[src])return true;
  ...
  loaded[src]=true;
  return true;
}

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0882 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.