Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript GWT和JSInterop命名空间_Javascript_Java_Gwt - Fatal编程技术网

Javascript GWT和JSInterop命名空间

Javascript GWT和JSInterop命名空间,javascript,java,gwt,Javascript,Java,Gwt,我这里有一些原生JS测试代码(mydialog.JS) 我正在使用GWT注入以下代码: ScriptInjector.fromUrl("mydialog.js").setCallback(new Callback<Void, Exception>() { @Override public void onFailure(Exception reason) { Window.alert("Dialog Injection Failed!" + re

我这里有一些原生JS测试代码(mydialog.JS)

我正在使用GWT注入以下代码:

ScriptInjector.fromUrl("mydialog.js").setCallback(new Callback<Void, Exception>()
{
    @Override
    public void onFailure(Exception reason)
    {
        Window.alert("Dialog Injection Failed!" + reason);
    }

    @Override
    public void onSuccess(Void result) {}

    }).inject();
}
问题是namesoace JsPackage.GLOBAL不准确。注入的代码不在全局名称空间下,而是由GWT生成的代码,我相信可能在GWT iframe内。我需要什么名称空间

换句话说,这应该是什么:

...namespace=???...

JsInterop假设它正在推理的代码位于主窗口中——这不是名称空间的不同,而是它运行在不同的全局上下文下(具有不同的对象、数组类型等)。在java术语中,你可能认为这不仅仅是“错误包”,而是“错误的类加载器”,尽管在某种程度上你不能很好地纠正。 相反,请指示ScriptInjector将您创建的JS放入主页面,您可以直接使用
setWindow

ScriptInjector.fromUrl(...)
    .setWindow(ScriptInjector.TOP_WINDOW)
    .setCallback(...);

或者,您可以使用
”的“magic”字符串,这意味着“根本不提供任何名称空间”。这不是JsInterop的正式部分(常量本身没有在JsInterop注释中声明),但至少目前是一种解决此问题的方法

JsInterop假设它所推理的代码存在于主窗口中——这不是名称空间的不同,而是它运行在不同的全局上下文下(具有不同的对象、数组类型等)。在java术语中,你可能认为这不仅仅是“错误包”,而是“错误的类加载器”,尽管在某种程度上你不能很好地纠正。 相反,请指示ScriptInjector将您创建的JS放入主页面,您可以直接使用
setWindow

ScriptInjector.fromUrl(...)
    .setWindow(ScriptInjector.TOP_WINDOW)
    .setCallback(...);

或者,您可以使用
”的“magic”字符串,这意味着“根本不提供任何名称空间”。这不是JsInterop的正式部分(常量本身没有在JsInterop注释中声明),但至少目前是一种解决此问题的方法

好吧,我想它在这些方面起到了同样的作用。谢谢太棒了,救了我一天!好吧,我想它在这些方面起到了同样的作用。谢谢太棒了,救了我一天!
ScriptInjector.fromUrl(...)
    .setWindow(ScriptInjector.TOP_WINDOW)
    .setCallback(...);