joe*_*ker 3 javascript java internet-explorer liveconnect
LiveConnect是一种桥接Java和JavaScript的Mozilla技术.令人惊讶的是,他们已经开始为最新版本的Firefox再次维护它.在Firefox中我可以写例如
var d = new java.util.Date();
Run Code Online (Sandbox Code Playgroud)
Packages.如果它不是java.something,请使用命名空间
var d = new Packages.java.util.Date();
Run Code Online (Sandbox Code Playgroud)
或者我可以发疯并称之为工厂方法
Packages.javax.swing.Box.createVerticalBox();
Run Code Online (Sandbox Code Playgroud)
轻松实例化任何Java对象.有没有相同的工作在ie?
您可以在Internet Explorer中执行的操作是将applet加载到页面中,该页面公开了执行您要执行的操作的方法.您获得对applet的引用,然后调用该引用上的方法.
<applet id="myAppletId" name="myAppletName" ...>
var applet = document.getElementById('myAppletId');
var d = applet.getDateFromApplet();
Run Code Online (Sandbox Code Playgroud)
在您的applet中,您需要一个getDateFromApplet()返回a 的公共方法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;
}
Run Code Online (Sandbox Code Playgroud)
最后,它可能(应该)可以使用<object>标记执行此操作,但正如我所说,自从我需要以这种方式从客户端JavaScript与Java applet交互以来,已经有好几年了,所以我还没有测试过它.
| 归档时间: |
|
| 查看次数: |
3108 次 |
| 最近记录: |