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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка cluetip в chrome 
:(
    Опции темы
Severyanin
Дата 9.10.2012, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 31.7.2007
Где: Россия, Омск

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



Всем привет. Знакомые попросили для проводимого конкурса эссе сделать интерактивную карту Росии, при наведении мыши на регион он должен изменять цвет и подсчитывать количество работ, присланных жителями этого региона. Так как с яваскриптом не работал уже очень давно, решил использовать готовые решения в виде svg, библиотек jquery и сluetip. Подсмотрел похожее решение в статье на хабре.
В результате набросал следующий код прототипа:
Код

jQuery.fn.myAddClass = function (classTitle) {
    return this.each(function() {
    var oldClass = jQuery(this).attr("class");
    oldClass = oldClass ? oldClass : '';
    jQuery(this).attr("class", (oldClass+" "+classTitle).trim());
    });
}
jQuery.fn.myRemoveClass = function (classTitle) {
    return this.each(function() {
        var oldClass = jQuery(this).attr("class");
        var startpos = oldClass.indexOf(classTitle);
        var endpos = startpos + classTitle.length;
        var newClass = oldClass.substring(0, startpos).trim() + " " + oldClass.substring(endpos).trim();
        if (!newClass.trim())
            jQuery(this).removeAttr("class");
        else
            jQuery(this).attr("class", newClass.trim());
    });

function occur(str, pattern) {
  var pos = str.indexOf(pattern);
  for (var count = 0; pos != -1; count++)
    pos = str.indexOf(pattern, pos + pattern.length);
  return count;
}
function getTitleById(id,type)
{
    var addition = "";
    switch(type)
    {
        case 1: addition = " область"; break;
        case 2: addition = " край"; break;
        case 3: addition = " автономный округ"; break;
        case 4: addition = " республика"; break;
        case 5: addition = ""; break;
        case 6: addition = " автономная область"; break;
        default: addition = " область"; break;
    } 
    
    var regions = {"OMS":"Омская",
    "MUR":"Мурманская",
    "KR":"Карелия",
    "LEN":"Ленинградская",
    "PSK":"Псковская",
    "KGD":"Калининградская",
    "NGR":"Новгородская",
    "TVE":"Тверская",
    "SMO":"Смоленская",
    "BRY":"Брянская",
    "KLU":"Калужская",
    "MOS":"Московская",
    "MOW":"Москва",
    "TUL":"Тульская",
    "ORL":"Орловская",
    "KRS":"Курская",
    "BEL":"Белгородская",
    "LIP":"Липецкая",
    "VOR":"Воронежская",
    "ROS":"Ростовская",
    "KDA":"Краснодарский",
    "AD":"Адыгея",
    "KC":"Карачаево-Черкесская",
    "KB":"Кабардино-Балкарская",
    "SE":"Северная Осетия-Алания",
    "IN":"Ингушетия",
    "CE":"Чеченская",
    "DA":"Дагестан",
    "STA":"Ставропольский",
    "KL":"Калмыкия",
    "AST":"Астраханская",
    "VGG":"Волгоградская",
    "SAR":"Саратовская",
    "TAM":"Тамбовская",
    "RYA":"Рязанская",
    "VLA":"Владимирская",
    "YAR":"Ярославская",
    "VLG":"Вологодская",
    "ARK":"Архангельская",
    "NEN":"Ненецкий",
    "KO":"Коми",
    "KIR":"Кировская",
    "KOS":"Костромская",
    "IVA":"Ивановская",
    "NIZ":"Нижегородская",
    "MO":"Мордовия",
    "PNZ":"Пензенская",
    "ULY":"Ульяновская",
    "SAM":"Самарская",
    "TA":"Татарстан",
    "BA":"Башкортостан",
    "ORE":"Оренбуржская",
    "PER":"Пермский",
    "UD":"Удмуртия",
    "CHE":"Челябинская",
    "ME":"Марий Эл",
    "CU":"Чувашская",
    "YAN":"Ямало-Ненецкий",
    "KHM":"Ханты-Мансийский",
    "SVE":"Свердловская",
    "KGN":"Курганская",
    "TY":"Тыва",
    "TOM":"Томская",
    "NVS":"Новосибирская",
    "ALT":"Алтайский",
    "KYA":"Красноярский",
    "SA":"Саха(Якутия)",
    "CHU":"Чукотский",
    "KAM":"Камчатский",
    "MAG":"Магаданская",
    "KHA":"Хабаровский",
    "PRI":"Приморский",
    "SAK":"Сахалинская",
    "YEV":"Еврейская",
    "AMU":"Амурская",
    "ZAB":"Забайкальский",
    "BU":"Бурятия",
    "IRK":"Иркутская",
    "KEM":"Кемеровская",
    "KK":"Хакасия",
    "AL":"Алтай",
    "TYU":"Тюменская"
    };
    var name = (id in regions) ? regions[id] : id;
    
    var count = occur($("#works").html(), name);
    
    return name + addition +": " + count + " работ";
}
jQuery(window).load(function () { 
     var svgobject = document.getElementById('imap');
        if ('contentDocument' in svgobject)
        {
            var svgdom = svgobject.contentDocument;
            $(svgdom.getElementsByClassName("oblast")).hover(
                function () {
                    var htmlcontent = $("#testcontent").html();
                    var id = $(this).attr("id");
                    //alert(id);
                    $(this).css('fill','red');
                    $(this).attr({title:getTitleById(id,1)});
                    $(this).cluetip();
                },
                function () {
                    $(this).css('fill','#d6a477');
                    $(this).removeAttr("title");
                    //$(this).removeAttr("rel");
                }
            );
            $(svgdom.getElementsByClassName("krai")).hover(
                function () {
                    var htmlcontent = $("#testcontent").html();
                    var id = $(this).attr("id");
                    //alert(id);
                    $(this).css('fill','red');
                    $(this).attr({title:getTitleById(id,2)});
                    $(this).cluetip();
                },
                function () {
                    $(this).css('fill','#d6a477');
                    $(this).removeAttr("title");
                    //$(this).removeAttr("rel");
                }
            );
            $(svgdom.getElementsByClassName("republic")).hover(
                function () {
                    var htmlcontent = $("#testcontent").html();
                    var id = $(this).attr("id");
                    //alert(id);
                    $(this).css('fill','red');
                    $(this).attr({title:getTitleById(id,4)});
                    $(this).cluetip();
                },
                function () {
                    $(this).css('fill','#d6a477');
                    $(this).removeAttr("title");
                    //$(this).removeAttr("rel");
                }
            );
            $(svgdom.getElementsByClassName("federal")).hover(
                function () {
                    var htmlcontent = $("#testcontent").html();
                    var id = $(this).attr("id");
                    //alert(id);
                    $(this).css('fill','red');
                    $(this).attr({title:getTitleById(id,5)});
                    $(this).cluetip();
                },
                function () {
                    $(this).css('fill','#d6a477');
                    $(this).removeAttr("title");
                    //$(this).removeAttr("rel");
                }
            );
            $(svgdom.getElementsByClassName("autoOblast")).hover(
                function () {
                    var htmlcontent = $("#testcontent").html();
                    var id = $(this).attr("id");
                    //alert(id);
                    $(this).css('fill','red');
                    $(this).attr({title:getTitleById(id,6)});
                    $(this).cluetip();
                },
                function () {
                    $(this).css('fill','#d6a477');
                    $(this).removeAttr("title");
                    //$(this).removeAttr("rel");
                }
            );
            $(svgdom.getElementsByClassName("autoOkrug")).hover(
                function () {
                    var htmlcontent = $("#testcontent").html();
                    var id = $(this).attr("id");
                    //alert(id);
                    $(this).css('fill','red');
                    $(this).attr({title:getTitleById(id,3)});
                    $(this).cluetip();
                },
                function () {
                    $(this).css('fill','#d6a477');
                    $(this).removeAttr("title");
                    //$(this).removeAttr("rel");
                }
            );
        }            
     
});

Подключаю скрипты как обычно:
Код

<script src="./js/jquery-1.8.1.min.js"></script>
<script src="./js/jquery.hoverIntent.js" type="text/javascript"></script>
<script src="./js/cluetip.js"></script>
<script src="./js/russian_map.js"></script>


Последний содержит непосредственно код.
В качестве донора я взял свободный шаблон Sea Shells, в который и встроил карту. Все это - в прикрепленном архиве.
В firefox код работает без ошибок, но в хроме отрабатывает все до строчек 
Код

$(this).attr({title:getTitleById(id,6)});
$(this).cluetip();

Отладчик хрома показывает, что функция возвращает правильный результат, но clurtip на срабатывает.
Подскажите решение проблемы, пожалуйста. 

Присоединённый файл ( Кол-во скачиваний: 0 )
Присоединённый файл  innovatika.zip 280,25 Kb


--------------------
"Звонким вереском скроются наши следы, и не вспомнят о них. Кто поверит нам, рыцарям павшей звезды из отвергнутых книг? Пусть в узоре времен ни стихов. ни имен, но напомнит забывшим их полуночный крик." Тэм Гринхилл
"Ужели суслик твоего коварства нагадит в плов доверья моего?". Л.Филатов 
PM MAIL WWW ICQ   Вверх
Aliance
Дата 9.10.2012, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

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



Залей рабочий в Fx код на jsfiddle, чтобы было точно как у тебя.
PM MAIL WWW ICQ Skype   Вверх
Severyanin
Дата 9.10.2012, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 31.7.2007
Где: Россия, Омск

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



Aliance,, не понял, как туда добавить свг-картинку


--------------------
"Звонким вереском скроются наши следы, и не вспомнят о них. Кто поверит нам, рыцарям павшей звезды из отвергнутых книг? Пусть в узоре времен ни стихов. ни имен, но напомнит забывшим их полуночный крик." Тэм Гринхилл
"Ужели суслик твоего коварства нагадит в плов доверья моего?". Л.Филатов 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Применение библиотек | Следующая тема »


 




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


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

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