加载高度设置为100%的Java小程序

问题描述:

我有一个显示java小程序的网页。该小程序的大小,如果窗口调整使用JavaScript的工作正常。 小程序的宽度和高度设置为100%。当小程序加载时,显示图像加载高度设置为100%的Java小程序

image = "preloader.gif" 

使用IE 6/7一切正常。但在Firefox中,小程序的高度约为200像素。宽度在100%时是正确的。因此,预加载器图像被减半。小程序加载后,javascript调整页面大小后,宽度和高度设置正确。

如果我更改了HTML代码并使用了小程序的固定大小,则该对象在加载过程中将正确显示,但之后无法调整大小。

有没有解决这个问题的方法?

感谢, 丹尼尔

PS我使用的对象/嵌入标签,但问题是相同的,如果我使用小程序标记。

很难说不看页面。一种可能性是JavaScript运行之前的applet加载。在这种情况下,您可以尝试使用javascript加载小程序(而不是直接在html中进行编码)。

我建议你实现一个基于CSS的解决方案,并创建包含div100%大小的小程序。我使用这种方法,它非常简单,可靠并且跨浏览器可靠。有什么理由不能做到这一点?

+0

这正是我要做的事。小程序(100%)包含在div也设置为100%的宽度和高度。正如我所说的,它适用于IE,但不适用于Firefox。 – puls200

+0

为了澄清,调整大小也适用于Firefox - 但不是在加载阶段。一旦加载了所有.jar归档,applet就会将其句柄传递给该页面,小程序区域将正确调整大小。这只是初始化小程序的小细节。 – puls200

+0

有趣的是,如果在调整大小之前发生问题,那么不能推断出它是一个CSS问题。你能否尝试禁用JavaScript调整大小的代码并尝试修复它,以便在此阶段正确显示小程序? – Pool

我在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

中运行的代码我有同样问题的代码,我无法找到答案,但我得到了解决。 您必须将小程序代码嵌入到Javascript函数中,并在加载页面后立即用它填充body的innerHtml(或任何您想要使用applet的地方)。所以......

//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 
} 

任何增加的答案是有帮助:-)