gpt4 book ai didi

java - 在 IE 中从 Java 调用 JavaScript 函数时出现访问被拒绝异常

转载 作者:行者123 更新时间:2023-12-01 16:09:07 24 4
gpt4 key购买 nike

当我仅在 IE 中从 Java Applet 调用 Java 脚本函数时,出现访问被拒绝异常。 (用更新的信息修改了我原来的问题。)

这是我的 HTML 代码

<script type="text/javascript">
function uploadComplete() {
alert("in Upload Complete");
ju.doneUpload(true);
}
</script>

ju 在同一页面中全局声明,该页面从不同的 JavaScript 文件调用 didUpload。我已将 MAYSCRIPT 包含在我的小程序标签中。

Java代码[添加AccessController后]:

 AccessController.doPrivileged(new PrivilegedAction<Object>() {
public Object run() {

JSObject scriptObject = getScriptObject(uploadDialogBox.applet);
if(scriptObject != null) {
try {
// this is the call where it throws an exception
**scriptObject.call("uploadComplete", null);**
} catch(JSException e) {
System.out.println("exception " + e.getMessage()
+ " WrappendException " + e.getWrappedException()
+ " stack trace " + e.getStackTrace());
}
}
return null;
}

});

private JSObject getScriptObject(JApplet appletInstance) {
JSObject result = null;
// JSObject doc = null;
try {
result = JSObject.getWindow(appletInstance);
// doc = (JSObject) result.getMember("document");
} catch (JSException e) {
System.out.println("Exception in getScriptObject : " + e.getMessage()
+ " Wrappend exception " + e.getWrappedException());
}
return result;
}

它抛出一个JSException:访问被拒绝

未调用uploadComplete中的alert函数。我在这里做错了什么?

最佳答案

this有帮助吗?

Sun 论坛上的回答摘要:

你好,我也遇到了同样的问题。我解决了,你只需要实现这样的小程序方法:

public void f() {
AccessController.doPrivileged(new PrivilegedAction<Object>() {
public Object run() {
// do something
return null;
}
});
}

这种方法唯一的问题是,当你第一次调用方法时,需要很长的时间才能响应(4-5秒),而每次调用都会立即响应。

编辑:好的,第二个可能的解决方案是使用 getDocument(),如 this article 中所述。 。需要警告的是,在我们的测试中,我们发现这在 Mac 上的 Firefox 上并不总是可靠。这个方法的本质是做:

getAppletContext().showDocument(new URL("javascript:uploadComplete()"));

关于java - 在 IE 中从 Java 调用 JavaScript 函数时出现访问被拒绝异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1876509/

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