gpt4 book ai didi

java - 是否可以在 ie 中从 JavaScript 创建任意 Java 对象?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:31:52 26 4
gpt4 key购买 nike

LiveConnect 是一种桥接 Java 和 JavaScript 的 Mozilla 技术。令人惊讶的是,他们已经开始为最新版本的 Firefox 再次维护它。在 Firefox 中我可以写例如

var d = new java.util.Date();

或者使用 Packages. 命名空间,如果它不是 java.something

var d = new Packages.java.util.Date();

或者我会发疯并在 swing 中调用工厂方法

Packages.javax.swing.Box.createVerticalBox();

轻松实例化任何 Java 对象。是否有适用于 ie 的等效项?

最佳答案

您可以在 Internet Explorer 中做的是将一个小程序加载到页面中,该页面公开执行您想要执行的操作的方法。您获得对小程序的引用,然后调用该引用的方法。

<applet id="myAppletId" name="myAppletName" ...>

var applet = document.getElementById('myAppletId');
var d = applet.getDateFromApplet();

在您的小程序中,您需要一个公共(public)方法 getDateFromApplet()返回 java.util.Date .

请注意,我展示的内容应该有效,但我已经好几年没有这样做了(当时它在 NS4、6 和 IE 4+ 中有效)。我没有使用 getElementById()但是,我使用了 var applet = document.myAppletName; .

另一个复杂的是,如果你想让它在页面加载时执行,applet 几乎肯定不会准备好,这需要类似这样的代码:

function checkApplets() {
var da = document.applets; // document.getElementsByName('applet');?

if (da.length > 0) {
for (var ii = da.length; ii-- > 0;) {
if (!da[ii].isActive()) {
window.timerId = setTimeout(checkApplets, 250);
return;
}
}

if (window.timerId) {
clearTimeout(window.timerId);
}
}

window.appletsLoaded = true;
}

最后,可能(应该)可以用 <object> 来做到这一点标记,但正如我所说,我需要以这种方式从客户端 JavaScript 与 Java applet 交互已经有好几年了,所以我还没有测试过它。

关于java - 是否可以在 ie 中从 JavaScript 创建任意 Java 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1295882/

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