Проблемы позиционирования Plupload в Chrome - PullRequest
1 голос
/ 28 октября 2011

Я использую plupload в a, который загружается динамически через AJAX, а также эта форма имеет изображение с картинки.Я изо всех сил пытался сделать корректирующую прокладку для правильного позиционирования.Тогда я нашел решение, которое работает практически во всех браузерах, кроме Google Chrome.Вот мое решение:

<span id="upl_container" style="position:relative;">
    <input type="button" id="my_button" value="Click me to upload something" />
</span>

В настройках загрузчика я установил:

        browse_button : 'my_button',
        container : 'upl_container',

Теперь это делает прокладку абсолютно позиционированной в относительном родителе, где родитель (span)точно размер кнопки (я не мог использовать div, потому что он занимает 100% ширины своего родителя, а затем у plupload возникают проблемы с позиционированием во всех браузерах).

Когда я проверяю настройки shim plupload в Firefox (где онправильно расположен), я вижу следующее:

element.style {
    background: none repeat scroll 0 0 transparent;
    height: 28px;
    left: 0;
    position: absolute;
    top: -4px;
    width: 78px;
    z-index: 99999;
}

, но в Chrome он показывает мне:

element.style {
position: absolute;
background: transparent;
z-index: 99999;
top: 0px;
left: 146px;
width: 70px;
height: 23px;
background-position: initial initial;
background-repeat: initial initial;
}

Очевидно, свойство left слишком велико.

На данный момент мне все равно, если это ошибка или нет, я просто хочу найти обходной путь, как заставить левую сторону plupload равным 0. Я попытался добавить код Javascript, который устанавливает значение 0 в Init, Refresh., PreInit обратные вызовы для загрузки, но это не помогает, левая сторона в любом случае переходит к 146px.

Есть ли какой-нибудь способ заставить левую сторону шимма быть 0px?

(Кстати, я установил Flash в качестве среды выполнения по умолчанию с откатом с откатом на HTML4)и HTML5).

Ответы [ 2 ]

1 голос
/ 22 декабря 2011

У меня были проблемы с тем, что прокладка не в нужном месте на динамически загруженном и переключенном содержимом.

$('#my_button').mouseenter(function() {
    uploader.refresh();
});

Достаточно было исправить это.

1 голос
/ 30 октября 2011

Хорошо, я пошел со следующим уродливым кодом:

uploader.bind('Refresh', function(up) {
    $('#'+up.settings.container + ' > div').css('left',0);
    $('#'+up.settings.container + ' > div').css('top',0);
    $('#'+up.settings.container + ' > div').css('width','100%');
    $('#'+up.settings.container + ' > div').css('height','100%');
    $('#'+up.settings.container + ' > form').css('left',0);
    $('#'+up.settings.container + ' > form').css('top',0);
    $('#'+up.settings.container + ' > form').css('width','100%');
    $('#'+up.settings.container + ' > form').css('height','100%');
    $('#'+up.settings.container + ' > div').children().css('left',0);
    $('#'+up.settings.container + ' > div').children().css('top',0);
    $('#'+up.settings.container + ' > div').children().css('width','100%');
    $('#'+up.settings.container + ' > div').children().css('height','100%');
    $('#'+up.settings.container + ' > div').children().css('font-size','20px');// default is 999px, which breaks everything in firefox
})

И ура! он работает для flash, htm5, htm4 runimes, протестирован на Chrome, Firefox, IE7, IE9. Подкладка, наконец, на месте.

...