【发布时间】:2013-05-23 21:00:47
【问题描述】:
使用 JavaFX 小程序:
我使用 document.getElementById("APPLET_ID") 获得的 javascript 对象在 Windows 下没有 Packages 属性。 我在 Windows XP 上使用最新的 IE8、FF 和 Chrome 运行测试,但在 Windows 7 下出现同样的问题。
在带有 JRE 7u7 x64 的 Ubuntu 下,没有这个问题。
这是我的测试代码:
package test;
import netscape.javascript.JSObject;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;
public class Main extends Application {
private JSObject js;
TextField tf;
@Override
public void start(Stage primaryStage) {
js = this.getHostServices().getWebContext();
HBox hb = new HBox();
Scene s = new Scene(hb, 400, 400);
tf = new TextField("MAIN");
primaryStage.setScene(s);
hb.getChildren().add(tf);
primaryStage.show();
runTest();
}
public static void main(String[] args) {
launch(args);
}
void runTest(){
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Platform.runLater(
new Runnable() {
@Override
public void run() {
tf.setText("" + js.eval("document.getElementById('applet_id').Packages == null"));
}
}
);
}
}).start();
}
}
在 Ubuntu JRE7u7x64 下显示“false”,在所有浏览器的 Windows 和 Ubuntu JRE7u21 下显示“true”。
JavaFX2 部署文档页面告诉我这样做是正确的,它看起来像一个 JRE 错误。你怎么看?
http://docs.oracle.com/javafx/2/deployment/javafx_javascript.htm.
【问题讨论】:
-
最好在the JavaFX issue tracker提出问题
-
在 Ubuntu 下使用 JRE7u21x64 测试:Packages 属性也为空。拜托,这是一个严重的问题,如果这是一个全新的错误,不推荐使用包的访问(没有看到任何线索),或者已知的错误,有人能注意到我吗?提前致谢。
-
发布在 Oracle 论坛上:forums.oracle.com/forums/thread.jspa?threadID=2542189
-
这个可怕页面上 JRE7u21 更改的唯一线索:docs.oracle.com/javase/tutorial/deployment/applet/… 更改是当混合特权代码和沙箱代码时,应提示警告(请参阅docs.oracle.com/javase/7/docs/technotes/guides/jweb/…)。在我所有的测试中,没有出现警告。看起来我缺少访问包的权限,即使在我的 JNLP 文件中请求全权限安全策略时也是如此。
-
我将在此处停止发帖,仅更新 JavaFX Jira 错误报告。如有问题,我会发布我的问题的答案。
标签: java javascript javafx-2 packages