【问题标题】:To Preview the content in textarea在 textarea 中预览内容
【发布时间】:2012-04-02 14:58:48
【问题描述】:

在 IE 浏览器中预览内容时出现以下错误。我不明白为什么会发生此错误。错误堆栈如下:

00:37:03.281 [错误] 未捕获的异常已转义 java.lang.AssertionError: 试图从 com.google.gwt.event.shared.HandlerManager$HandlerRegistry.removeHandler(HandlerManager .java:98) 在 com.google.gwt.event.shared.HandlerManager$HandlerRegistry.access$7(HandlerManager.java:91) 在 com.google.gwt.event.shared.HandlerManager.doRemove(HandlerManager.java:273)在 com.google.gwt.event.shared.HandlerManager.access$1(HandlerManager.java:271) 在 com.google.gwt.event.shared.HandlerManager$2.execute(HandlerManager.java:289) 在 com.google.gwt .event.shared.HandlerManager.handleQueuedAddsAndRemoves(HandlerManager.java:298) 在 com.google.gwt.event.shared.HandlerManager.fireEvent(HandlerManager.java:183) 在 com.google.gwt.user.client.ui.Widget .fireEvent(Widget.java:52) 在 com.google.gwt.event.dom.client.DomEvent.fireNativeEvent(DomEvent.java:116) 在 com.google.gwt.user.client.ui.Widget.onBrowserEvent(Widget .ja va:100) 在 com.capgent.cpt.client.ImageRollover.onBrowserEvent(ImageRollover.java:250) 在 com.google.gwt.user.client.DOM.dispatchEventImpl(DOM.java:1307) 在 com.google.gwt .user.client.DOM.dispatchEvent(DOM.java:1263) 在 sun.reflect.GeneratedMethodAccessor218.invoke(Unknown Source) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method .invoke(Method.java:585) 在 com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103) 在 com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71 ) 在 com.google.gwt.dev.shell.BrowserChannel.reactToMessagesWhileWaitingForReturn(BrowserChannel.java:1713) 在 com.google.gwt 的 com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:157)。 dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:165) 在 com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:120) 在 com.google.gwt.dev.shell。 ModuleSpace.invokeNative(ModuleSpace.java:507) 在 com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:264) 在 com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java: 91) 在 com.google.gwt.core.client.impl.Impl.apply(Impl.java) 在 com.google.gwt.core.client.impl.Impl.entry0(Impl.java:188) 在 sun.reflect .GeneratedMethodAccessor164.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at com.google.gwt.dev.shell .MethodAdaptor.invoke(MethodAdaptor.java:103) 在 com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) 在 com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java :157) 在 com.google.gwt.dev.shell.BrowserChannel.reactToMessages(BrowserChannel.java:1668) 在 com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:401) 在 com.googl e.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:222) at java.lang.Thread.run(Thread.java:595)

预览内容的代码如下:

private static native void previewContent() /*-{
   top.consoleRef = window.open("","previewTemplate","");
   top.consoleRef.document.writeln(
      '<html><head><title>Template Preview</title></head>'
      +'<body>'
      + value
      +'</body></html>'
   )
   top.consoleRef.document.close()
}-*/;

value 是要预览的内容。

【问题讨论】:

    标签: java gwt


    【解决方案1】:

    不知道这是否是您的错误,但您必须在 JSNI 方法中使用 $wnd 而不是 window

    来自GWT JSNI page:

    请注意,代码没有引用 JavaScript 窗口对象 直接在方法里面。当访问浏览器的窗口和 来自 JSNI 的文档对象,您必须将它们作为 $wnd 和 $doc 引用, 分别。您编译的脚本在嵌套框架中运行,并且 $wnd 并且 $doc 会自动初始化以正确引用主机 页面的窗口和文档。

    另见这个问题:Which is the difference between $doc.getElementById(“id”) and document.getElementById(“id”) in JSNI

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-10
      • 1970-01-01
      • 1970-01-01
      • 2016-10-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多