forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   JavaScript / HTML (http://forum.boolean.name/forumdisplay.php?f=136)
-   -   ВК+смайлы. Помогите со скриптом (http://forum.boolean.name/showthread.php?t=17071)

RegIon 23.07.2012 17:17

ВК+смайлы. Помогите со скриптом
 
PHP код:

whatrep=['=) :-)',';) ;-)'];
torep=['SMILE','EYE'];

mask='<img src=#SMILEURL# alt="!!SMILE not find!!"></img>';
scan_class=['fc_msg','dialogs_msg_text','pad_msg_text'];
//переписанный код замены
function exreplace(text,from,to)
{
var 
tmp=text;
var 
strarr=from.split(" ");

for(var 
i=0;i<strarr.length;i++)
    
tmp=tmp.split(strarr[i]).join(to);
return 
tmp;
}
//сама замена
function repsmile(text)
{
var 
tmp=text;
    for(var 
i=0;i<whatrep.length;i++)
    {
    var 
mathto=mask.replace('#SMILEURL#',torep[i]);
    
tmp=exreplace(tmp,whatrep[i],mathto);
    }
return 
tmp;
}
//Место где искать
function finddiv()
{
alert("script start");
var 
obj=document.getElementsByTagName('div');
for(var 
i=0;i<obj.length;i++)
    {
    for(var 
n=0;n<scan_class.length;n++)
        {
        if(
obj[i].className.substr(0,scan_class[n].length)==scan_class[n]) 
            {
            
alert(obj[i].innerHTML);
            
obj[i].innerHTML=repsmile(obj[i].innerHTML);
            
            }
        
        }
    }
}
finddiv(); 

Написал код, собрал плагин для Мазилы, он просто подгружает на страницу левый скрипт.
Скрипт запускается (алерт вылетает), но второй, который в цикле,НЕТ.
На симуляторе ВК (тупо страница с DIV нужных классов) работает, то есть меняет "=) :-)" на картинку.
В чем проблема может быть (на говногод не глядеть)?
И как можно сделать запуск finddiv() после изменения страницы?
:rolleyes:

moka 23.07.2012 17:49

Ответ: ВК+смайлы. Помогите со скриптом
 
Для дебага, используй console.log() и консоль в броузере (не IE).
Далее выведи сперва данные по прохождению цикла, например количество найденных объектов по тэгу, далее выведи сам класс, и результат проверки класса потом.
Также если хочешь проверить есть ли класс, лучше используй не substr, а indexOf для проверки наличия класса. Типо так:
PHP код:

obj[i].className.indexOf(scan_class[n]) != -


RegIon 23.07.2012 18:04

Ответ: ВК+смайлы. Помогите со скриптом
 
Цитата:

Сообщение от MoKa (Сообщение 233908)
Для дебага, используй console.log() и консоль в броузере (не IE).
Далее выведи сперва данные по прохождению цикла, например количество найденных объектов по тэгу, далее выведи сам класс, и результат проверки класса потом.
Также если хочешь проверить есть ли класс, лучше используй не substr, а indexOf для проверки наличия класса. Типо так:
PHP код:

obj[i].className.indexOf(scan_class[n]) != -


Вопрос, а если атрибут class="lolo lolol olol"-'это один класс или объект к нескольким относиться?

moka 23.07.2012 18:23

Ответ: ВК+смайлы. Помогите со скриптом
 
Это несколько классов относятся к этому элементу.
Например у я использую такие классы у двух элементов: 'arrow left'; 'arrow right'.
Таким образом можно писать стили для стрелочек, и отдельные дополнения для левой и правой.
Всегда рассчитывай на то что классов может быть больше чем один.

Также используй Inspector в Chrome или FireBug в Firefox чтобы просматривать удобно разметку и классы прямо на странице.

RegIon 23.07.2012 18:27

Ответ: ВК+смайлы. Помогите со скриптом
 
проверил, console.log(obj.length) вообще вернуло null, как так, хотя бы 0 должен.
скачал сдк для дополнений фаефокс,но при установке не в дебаг режиме не ставит, а пишет что не совместима, че делать

moka 23.07.2012 19:39

Ответ: ВК+смайлы. Помогите со скриптом
 
На счёт Firefox, хз что ты там качаешь, вот ссылка: http://getfirebug.com/

На счёт длины списка объектов. Да null не должен быть, следственно что-то не так. Ты уверен что null эта строка выдала, также нет каких либо ошибок ещё?

Если сделаешь пример на jsfiddle.net, то смогу помочь с JS.


Часовой пояс GMT +4, время: 08:53.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot