JQuery / Javascript работает и выключается - PullRequest
0 голосов
/ 24 июня 2009

Я использую JQuery 1.3.2-min в проекте для обработки JavaScript-анимации, ajax и т. Д. Я сохранил файл на том же сервере, что и сайт, вместо того, чтобы использовать Google. Когда я запускаю сайт локально на моей машине для разработки, все отлично работает в FF, IE, Opera и Safari (все последние версии - я работаю дома и у меня есть только 1 машина для личного использования и разработки), за исключением некоторого CSS Различия между ними, и когда я захожу на живой сайт на моей машине, он также работает нормально. Я очистил кеши и обновил страницу, и она все еще работает.

Здесь все становится интересно. Когда я отправляю сайт своему боссу для тестирования в различных конфигурациях ОС / браузера, одна страница не работает правильно, некоторые из них работают, некоторые нет. Кроме того, клиент (который использует IE 8) также подтвердил, что он не полностью работает - фактически он сказал мне, что страница будет работать нормально в течение часа, а затем просто «выключится» на некоторое время. Я никогда не слышал о подобных вещах раньше, и Google не поднимает слишком много. У меня есть догадка, что это может быть частично с .data () JQuery, но я не уверен.

Страница в основном состоит из неупорядоченных списков, и в списке выполняются три основных действия. Самый верхний неупорядоченный список установлен в видимый (весь список через css установлен для отображения: ни один, чтобы скрыть их при запросе новой страницы); всем элементам списка div при наведении указателя мыши на полное действие opacity, а при mouseoff - 50%; и затем при каждом щелчке по абзацу отображается самый верхний неупорядоченный список в этом элементе списка.

Вот мой файл Javascript для страницы:

$(function() {
    // Set first level ul visible
    $('div#pageListing ul:first').css('display', 'block');

    // Disable all the hyperlinks in the list
    $('div#pageListing li a').click(function() {
        var obj;
        obj = $(this).parent(0).parent('div:first');
        highlight(obj); 
        return false;
    });

    // List Item mouse hovering
    $('#pageListing li').hover(
            // Mouse On
            function() {
                if ($(this).children('div').attr('id') !== 'activePage') {
                    $(this).children('div').css('opacity', 1).css('filter',
                            'alpha(opacity=100)');
                }
            }, // Mouse off
            function() {
                if ($(this).children('div').attr('id') !== 'activePage') {
                    $(this).children('div').css('opacity', 0.4).css('filter',
                            'alpha(opacity=40)');
                }
            });

    // Active list item highlighting
    $('#pageListing li div').click(function() {
            highlight($(this));
        });

    // Sub-list expanding/collapsing
    $('#pageListing p.subpageslink').click(function() {
        // Get next list
            var subTree = $(this).parent('div').next('ul');

            // If list is currently active, close it, else open it.
            if (subTree.data('active') != true) {
                subTree.data('active', true);
                subTree.show(400);
            } else {
                subTree.data('active', false);
                subTree.hide(400);
            }
        });

    // Double clicking of list item - edit a page
    $('#pageListing li div').dblclick(function() {
        var classes = $(this).attr('class');
        var classArray = classes.split(' ');
        var pageID = classArray[1];
        editPage(pageID);
    });

    // Handle button clicking
    $('button#addPage').click(function() {
        addPage();
    });

    $('button#editPage').click(function() {
        var div = $('div#activePage');
        var classes = div.attr('class');
        var classArray = classes.split(' ');
        var pageID = classArray[1];
        editPage(pageID);
    });

    $('button#delPage').click(function() {
        var div = $('div#activePage')
        var classes = div.attr('class');
        var classArray = classes.split(' ');
        var pageID = classArray[1];
        delPage(pageID);
    });
});

// Highlighting of page when clicked
function highlight(obj) {
    // Get previous hightlighted element
    // and un-highlight
    var oldElement = $('div#activePage');
    oldElement.css('background', 'white');
    oldElement.css('opacity', 0.4).css('filter', 'alpha(opacity=40)');
    oldElement.removeAttr('id');

    // highlight current selection
    obj.attr('id', 'activePage');
    obj.css('opacity', 1).css('filter', 'alpha(opacity=100)');
    obj.css('background', '#9dc0f4');

    // add appropiate action buttons
    $('button.pageButton').css('display', 'inline');
}

function addPage() {
    window.location = "index.php?rt=cms/editPage";
}

function delPage(page) {

    var confirm = window.confirm("Are you sure? Any sub-pages WILL BE deleted also.");

    if (confirm) {
        var url = './components/cms/controller/forms/deletePage.php';
        $.ajax( {
            url : url,
            type : 'GET',
            data : 'id=' + page,
            success : function(result) {
                if (!result) {
                    document.location = "index.php?rt=cms";
                } else {
                    window.alert('There was a problem deleting the page');
                }   
            }
        });
    }
}

function editPage(page) {
    var url = "index.php?rt=cms/editPage/" + page;
    window.location = url;
}

Ответы [ 2 ]

0 голосов
/ 01 июля 2009

Спасибо всем за ваши предложения. Конечной проблемой было недопонимание. Я работаю из дома и загружаю свои проекты на сервер SVN, который затем использует начальник для обновления действующего сервера. Каким-то образом правильные файлы не обновлялись - ошибка связи с моей стороны. Другая возможная причина состояла в том, что на странице, объявленной XHTML 1.0 Strict, было около 50 ошибок проверки (в основном это неправильно вложенный UL), и я очистил это до 5 ошибок. Так что спасибо всем, но опять же грустный пример важности командного общения.

0 голосов
/ 24 июня 2009

Возможно ли, что вы ссылаетесь (некоторые из) на файлы сценариев, используя src, который указывает на файл на вашем локальном диске / жестком диске? Если это так, это объясняет, почему он работает только на вашем компьютере, так как тогда только ваш компьютер имеет доступ к файлу сценария.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...