Jquery Переключение экземпляров браузера - PullRequest
0 голосов
/ 11 марта 2010

Я использую jQuery вместе с большим количеством других плагинов jQuery. У меня проблема, когда у меня открыты два экземпляра Firefox или IE (в Vista), а затем, когда моя страница загружается, она автоматически переключается на экземпляр другого браузера (либо другой FF, либо другой IE). Если нет второго экземпляра браузера, то ничего не происходит.

Я добавил предупреждение в

jQuery.extend({
   isReady: false,
   readyList: [],
   // Handle when the DOM is ready
   ready: function() {}
});

Я поместил предупреждение в конец списка готовности, и когда оно срабатывает, то экземпляр swtich не происходит. Любые идеи будут великолепны.

Для ясности, переключатель экземпляров, о котором я говорю, похож на нажатие alt-tab.

Привет

John

1 Ответ

0 голосов
/ 19 марта 2010

Мы используем файл с именем table.layout.js, который, похоже, вызывает эту проблему. Удаление этого очищенного файла остановило переключение. Кое-что в этом было проблемой, извините, но у меня нет времени на отладку.

(function($){
var initLayout = function() {
    var hash = window.location.hash.replace('#', '');
    var currentTab = $('ul.navigationTabs a')
                        .bind('click', showTab)
                        .filter('a[rel=' + hash + ']');
    if (currentTab.size() == 0) {
        currentTab = $('ul.navigationTabs a:first');
    }
    showTab.apply(currentTab.get(0));
    $('#date').DatePicker({
        flat: true,
        date: '2008-07-31',
        current: '2008-07-31',
        calendars: 1,
        starts: 1,
        view: 'years'
    });
    var now = new Date();
    now.addDays(-10);
    var now2 = new Date();
    now2.addDays(-5);
    now2.setHours(0,0,0,0);
    $('#date2').DatePicker({
        flat: true,
        date: ['2008-07-31', '2008-07-28'],
        current: '2008-07-31',
        format: 'Y-m-d',
        calendars: 1,
        mode: 'multiple',
        onRender: function(date) {
            return {
                disabled: (date.valueOf() < now.valueOf()),
                className: date.valueOf() == now2.valueOf() ? 'datepickerSpecial' : false
            }
        },
        onChange: function(formated, dates) {
        },
        starts: 0
    });
    $('#clearSelection').bind('click', function(){
        $('#date3').DatePickerClear();
        return false;
    });
    $('#date3').DatePicker({
        flat: true,
        date: ['2009-12-28','2010-01-23'],
        current: '2010-01-01',
        calendars: 3,
        mode: 'range',
        starts: 1
    });
    $('.inputDate').DatePicker({
        format:'Y-m-d',
        date: $('#inputDate').val(),
        current: $('#inputDate').val(),
        starts: 1,
        position: 'right',
        onBeforeShow: function(){
            $('#inputDate').DatePickerSetDate($('#inputDate').val(), true);
        },
        onChange: function(formated, dates){
            $('#inputDate').val(formated);
            if ($('#closeOnSelect input').attr('checked')) {
                $('#inputDate').DatePickerHide();
            }
        }
    });
    var now3 = new Date();
    now3.addDays(-4);
    var now4 = new Date()
    $('#widgetCalendar').DatePicker({
        flat: true,
        format: ' YBd',
        date: [new Date(now3), new Date(now4)],
        calendars: 3,
        mode: 'range',
        starts: 1,
        onChange: function(formated) {

            $('#widgetField span').get(0).innerHTML = formated.join(' -- ');
                            // Custom
                gDateFr=formated[0].substring(1); gDateTo=formated[1];

                       }
    });
    var state = false;
    $('#widgetField>a').bind('click', function(){
        $('#widgetCalendar').stop().animate({height: state ? 0 : $('#widgetCalendar div.datepicker').get(0).offsetHeight}, 500);
        state = !state;
        return false;
    });
    $('#widgetCalendar div.datepicker').css('position', 'absolute');
};

var showTab = function(e) {
    var tabIndex = $('ul.navigationTabs a')
                        .removeClass('active')
                        .index(this);
    $(this)
        .addClass('active')
        .blur();
    $('div.tabc')
        .hide()
            .eq(tabIndex)
            .show();
};

EYE.register(initLayout, 'init');

}) (JQuery)

...