Загрузка Java-апплета с высотой, установленной на 100% - PullRequest
2 голосов
/ 14 февраля 2010

У меня есть веб-страница, которая отображает Java-апплет. Размер апплета изменяется, если размер окна изменяется с помощью JavaScript, который работает нормально. Ширина и высота апплета установлены на 100%. Когда апплет загружается, отображается изображение

image = "preloader.gif"

В IE 6/7 все работает нормально. Но в Firefox апплет имеет высоту около 200 пикселей. Ширина правильная на 100%. Поэтому изображение перед загрузчиком разрезается пополам. После того, как апплет загружен, и javascript изменяет размеры страницы, ширина и высота устанавливаются правильно.

Если я изменю код HTML и использую фиксированные размеры для апплета, объект будет корректно отображаться во время загрузки, но впоследствии не сможет изменить размер.

Есть ли решение этой проблемы?

Спасибо, Daniel

ps Я использую тег Object / embed, но проблема та же, если я использую тег applet.

Ответы [ 4 ]

1 голос
/ 14 февраля 2010

Я бы посоветовал вам реализовать решение на основе CSS и создать апплет с 100% размером содержащего div. Я использую этот метод, он простой, надежный и надежный. Есть ли причина, по которой вы не можете этого сделать?

0 голосов
/ 29 ноября 2012

У меня была такая же проблема, и я не могу найти ответ, но я нашел решение. Вы должны встроить код апплета в функцию Javascript и заполнить его внутренним текстом тела (или там, где вы хотите использовать апплет) вскоре после загрузки страницы. Итак ...

//optional: add styles
function styleApplet(){
    document.getElementsByTagName('body')[0].style.overflow = 'hidden';
}

//complementary funcion so applet code is readable
function documentWrite(chars){
    buffer +=chars;
}

//funcion to add all code at once. It is compulsory
function executeWrite(){
    document.getElementsByTagName('body')[0].innerHTML = buffer;
    buffer = '';
}

function writeApplet(){
    documentWrite('<applet code="..... </applet>');
    documentWrite('..... ');
    documentWrite('</applet>');

    executeWrite();
}

$(document).ready(function(){
    setTimeout('writeApplet()',100);
    setTimeout('styleApplet()',100); //optional
}

Любые дополнения к ответу полезны: -)

0 голосов
/ 25 октября 2010

Я получал такой же короткий и широкий апплет в Firefox и Opera.

Теперь я динамически создаю апплет, и это позволяет мне вычислять размер содержащего его div в зависимости от размера области просмотра. Это заставляет меня думать, что вы получите то, что хотите, если бы использовали содержащий div с размером, указанным в пунктах, а не как 100%.

Код, который я использую для создания апплета

function initJavaView() {
    ...
    var viewportHeight = window.innerHeight ? window.innerHeight : 
                                              $(window).height(); 
    var height = viewportHeight - appletArea.offsetTop - 8;
    html = '<div style="width:100%;height:' + height + 'px;">'

    if (!$.browser.msie /*&& !$.browser.mozilla*/){
        html = html + '<object type="application/x-java-applet;version=1.5" ';
    } else {
        html = html +
            '<object ' +
            'classid = "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" '+
            'codebase = "http://java.sun.com/update/1.5.0/jinstall-1_5-windows-i586.cab#Version=1,5,0,0" ';
    }
    html = html + ' width="100%" height="100%">' +
    ...
    appletArea.innerHTML = html;
};

Код работает на http://books.verg.es/elements_of_ux.html?format=java

0 голосов
/ 14 февраля 2010

Трудно сказать, не глядя на страницу. Одной из возможностей является загрузка апплета до запуска javascript. В этом случае вы можете попробовать загрузить апплет с помощью JavaScript (вместо того, чтобы кодировать его непосредственно в HTML).

...