gpt4 book ai didi

java - 如何在 Click 事件上加载我的 Java applet?

转载 作者:行者123 更新时间:2023-11-29 05:42:49 24 4
gpt4 key购买 nike

我有一个 div,我在其中加载了一个 Java applet,但是新版本的 Java 给出了一个未签名的证书错误:

Error

我想知道我是否可以限制我的 Java 小程序 (DeployJava.RunApplet) 的加载,当前在加载页面时实例化,仅在用户单击 View 时加载3D 按钮?

小程序加载代码:

<div id="appletContainer" runat="server" style="width:(document.body.clientWidth - 270);height:300" clientidmode="Static">
<script type="text/javascript">
var showCI = 0;
if (document.getElementById("hdnHas3D").value == "1" && !isAppleMobile()) {
var J3DStyleID = document.getElementById("hdn3DStyleID").value;
var code = "com.wirefusion.player.AppletPlayer";
var archiveList = "Some achive List";
var width = document.body.clientWidth - 270;
var height = 300;

var attributes = {
id: "appletContainerX",
name: J3DStyleID,
code: code,
codebase: ".",
width: width,
height: height,
mayscript: "true"
};
var parameters = {
progressFunc: "handleAppletProgress",
archive: archiveList,
java_arguments: "-Xmx200m",
regid: "6050-25",
resourcefolder: "/RichContent/3D_Vehicles/J3D/Vehicles/" + J3DStyleID + "/",
preloadfile: J3DStyleID + ".jar",
environmentType: "WEBSITE",
environmentWidth: width,
environmentHeight: height,
groupsXMLFile: "../../Resources/groups.xml",
vehicleXMLFile: J3DStyleID + ".xml"
};
var version = '1.6.0_20';
if (deployJava.versionCheck(version + '+')) {
docWriteWrapper(function () {
deployJava.runApplet(attributes, parameters, version);
});
} else {
if (document.getElementById("iframeContainer").style.display != "none") {
alert("Unable to load Interactive mode");
showCI = 1;

}
}
}
</script>
</div>

最佳答案

不包括常规 <applet> (或 <object> )标记在您的 HTML 中。相反 follow this tutorial了解如何使用 JavaScript 将其动态添加到您的页面。

HTML 4

function loadApplet(code,codebase,width,height,alt){
var placeholder=document.getElementById('placeholder');
if(window.opera){
placeholder.innerHTML='<applet code="'+code+'" codebase="'+codebase+'" width="'+width+'" height="'+height+'" alt="'+alt+'"></applet>';
}else{
var a=document.createElement('applet');
a.setAttribute('code',code);
a.setAttribute('codebase',codebase);
a.setAttribute('width',width);
a.setAttribute('height',height);
a.setAttribute('alt',alt);
placeholder.appendChild(a);
}
}

HTML 5

function loadApplet(code,codebase,width,height,alt){
var placeholder=document.getElementById('placeholder');
var a = document.createElement('object');
a.setAttribute('type','application/x-java-applet');
a.setAttribute('width',width);
a.setAttribute('height',height);
a.setAttribute('alt',alt);

var codeParam = document.createElement('param');
codeParam.setAttribute('name','code');
codeParam.setAttribute('value',code);
a.appendChild(codeParam);

var codebaseParam = document.createElement('param');
codebaseParam.setAttribute('name','codebase');
codebaseParam.setAttribute('value',codebase);
a.appendChild(codebaseParam);

placeholder.appendChild(a);
}

在您的 HTML 中创建一个占位符 DIV ,即您要将其加载到的位置,以及加载小程序的链接。您需要将加载链接中的值自定义为您的 Applet 值。

<div id="placeholder"></div>
<input type="button" value="Load Applet" onclick="loadApplet('TestApplet.class','.','200','300','demo applet')" />

链接的教程详细解释了如何让它变得漂亮。上面的代码只是简单的概念。


问题修改后的更新

您的代码似乎已经使用 JavaScript 加载小程序。问题是脚本在页面加载后立即运行,而不是在用户单击 View in 3D 按钮时运行。

为了防止它立即运行,您可以将加载程序代码包装在一个名为 loadApplet 的函数中.所以用伪代码解释:

function loadApplet() {
// Your existing applet loading code
}

所以使用您包含的源代码,我用一个函数包装了它,这将阻止它在您的页面加载时运行。

<div id="appletContainer" runat="server" style="width:(document.body.clientWidth - 270);height:300" clientidmode="Static">
<script type="text/javascript">
// Wrap your code with a function called loadApplet
function loadApplet() {
// Your applet loading code:
var showCI = 0;
if (document.getElementById("hdnHas3D").value == "1" && !isAppleMobile()) {
var J3DStyleID = document.getElementById("hdn3DStyleID").value;
var code = "com.wirefusion.player.AppletPlayer";
var archiveList = "Some achive List";
var width = document.body.clientWidth - 270;
var height = 300;

var attributes = {
id: "appletContainerX",
name: J3DStyleID,
code: code,
codebase: ".",
width: width,
height: height,
mayscript: "true"
};
var parameters = {
progressFunc: "handleAppletProgress",
archive: archiveList,
java_arguments: "-Xmx200m",
regid: "6050-25",
resourcefolder: "/RichContent/3D_Vehicles/J3D/Vehicles/" + J3DStyleID + "/",
preloadfile: J3DStyleID + ".jar",
environmentType: "WEBSITE",
environmentWidth: width,
environmentHeight: height,
groupsXMLFile: "../../Resources/groups.xml",
vehicleXMLFile: J3DStyleID + ".xml"
};
var version = '1.6.0_20';
if (deployJava.versionCheck(version + '+')) {
docWriteWrapper(function () {
deployJava.runApplet(attributes, parameters, version);
});
} else {
if (document.getElementById("iframeContainer").style.display != "none") {
alert("Unable to load Interactive mode");
showCI = 1;

}
}
}

}
</script>
</div>

然后到您的 3D View 元素,您必须添加 onclick调用 loadApplet() 的属性功能。例如:

<input type="button" value="Show in 3D" onclick="loadApplet()" />

注意:您的3D View 按钮可能已经有一个onclick。属性连接到一个使您的小程序进入 View 的函数,在这种情况下,您仍然希望在加载函数之后调用它。我用过showApplet()例如,这对您来说很可能有所不同。

<input type="button" value="Show in 3D" onclick="loadApplet(); showApplet();" />

如果您提供3D 显示 按钮的代码,我可以在这里更好地帮助您。

关于java - 如何在 Click 事件上加载我的 Java applet?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16892272/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com