在开发过程中巧妙地忽略 netscape.javascript.JSException

发布于 2024-07-16 09:45:51 字数 435 浏览 8 评论 0原文

Eclipse 允许您使用sun.applet.AppletViewer 调试小程序。 它实际上会启动小程序,运行它并模拟完整的浏览器运行时。 如果您的小程序中有 javascript 操作代码,这将导致 JSException,因为当前上下文不是真正启用 JS 的引擎。

你会如何解决这个问题? 我可以看到几种可能的路径:

  1. 将异常包装在 try {} catch () 中并忽略它 - 不是好的做法。
  2. 通过和环境标志告诉代码我们当前处于调试模式,这样它就不会尝试执行 JS 代码 - 好的,但需要每个开发人员的手动干预。
  3. 识别当前上下文不是浏览器 - 如何?
  4. 找到另一个可以模拟完整浏览器行为(包括 JS)的 AppletViewer - 有吗?
  5. 更多的?

感谢您的想法。

Eclipse allows you debug applets using sun.applet.AppletViewer. It will actually start the applet, run it and emulate complete browser runtime. If you have javascript manipulation code in your applet this will cause JSException because the present context is not a real JS enabled engine.

How would you solve this issue? I can see several possible paths:

  1. Wrap the exception in try {} catch () and ignore it - Not good practice.
  2. Pass and environment flag that would tell the code we are currently in debug mode, so that it won't try to execute JS code - OK but will need manual intervention from each developer.
  3. Identify current context is not a browser - How?
  4. Find another AppletViewer that can emulate a complete browser behavior, including JS - Is there ?
  5. More?

Thank for your ideas.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

心凉 2024-07-23 09:45:51

我想出了一个可行的解决方案,但不是万无一失:

private void notifySelectionState(){
    JSObject jsObject = null;

    try {
        jsObject = JSObject.getWindow(applet);

        // An exception can be thrown here (hopefully) only is running in debug environment...
    } catch (JSException e) {
        // So actually what I'm doing here is checking (in a very lame fashion) for if I'm in a the browser
        // content or in the AppletViewer
    } 

    if (jsObject != null) {
        jsObject.call(...);
    }
}

Not a fail safe but a workable solution I've managed to come up with:

private void notifySelectionState(){
    JSObject jsObject = null;

    try {
        jsObject = JSObject.getWindow(applet);

        // An exception can be thrown here (hopefully) only is running in debug environment...
    } catch (JSException e) {
        // So actually what I'm doing here is checking (in a very lame fashion) for if I'm in a the browser
        // content or in the AppletViewer
    } 

    if (jsObject != null) {
        jsObject.call(...);
    }
}
梦亿 2024-07-23 09:45:51

在某些较旧的浏览器上,JSObject 将抛出通用 RuntimeException,而不是 JSException。 所以你可能想把你的网撒得更宽一点,并在你的包装纸上留下一个好的评论。

On certain older browsers, JSObject will throw generic RuntimeExceptions instead of JSException. So you may want to throw your net a little bit wider and leave a good comment in your wrappers.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文