【问题标题】:How do I close a tab in Eclipse using Javascript?如何使用 Javascript 在 Eclipse 中关闭选项卡?
【发布时间】:2016-05-09 06:36:28
【问题描述】:

我目前正在将一些插件模块从 2.x 版本现代化到基于 OSGi 的 4.x。该项目使用 Eclipse 应用程序,并利用其视图和透视架构作为选项卡式浏览器。

研究旧代码并运行 Eclipse 应用程序,这是我理解的一个特定功能的预期行为:

  • 单击链接会在新选项卡中打开一个面板,其中显示一个包含 Javascript 的 HTML 文件。
  • HTML 页面包含一个以提交和取消按钮结束的表单。
  • 单击任一按钮应关闭选项卡。提交按钮当然会首先提交表单数据。

以上大部分操作都按预期工作,但是单击任一按钮会导致整个 Eclipse 应用程序尝试终止,而不是仅关闭一个选项卡(我收到了一个确认提示,询问我是否要退出 Eclipse)。在尝试终止 Eclipse 应用程序之前,提交按钮确实成功地将提交的信息更新到数据库中。

这就是代码中有问题的部分:

function onSubmit() {
    //processForm();
    if (opener) {
        opener.newAddressValue(newToAddress);
        window.close();
    } else if (parent.parent) {
        parent.parent.newAddressValue(newToAddress);
        parent.parent.closeUsrFrame();
    } else {
        parent.newAddressValue(newToAddress);
        parent.closeUsrFrame();
    }
}            
function onCancel() {
    if (opener) {
        window.close();
    } else {
        parent.closeUsrFrame();
    }
}

我怀疑预期的行为是程序流到达window.close(),此时包含已打开面板的选项卡应该关闭,但它会导致整个 Eclipse 应用程序终止。 在 Eclipse 4.x 中使用 JavaScript 退出当前选项卡的正确方法是什么?

【问题讨论】:

  • Core Eclipse 根本不支持插件中的Javascript,所以我不明白你在这里做什么。
  • 呃,不是吗?我正在使用 Eclipse 4.5.1。面板显示一个 HTML 文件,其中包含 javascript。
  • 编辑提及 HTML。我不确定为什么这不在我的问题中,可能是不小心删除了

标签: javascript eclipse eclipse-plugin


【解决方案1】:

如果程序显示一个使用SWT Browser widget的HTML文件,你可以使用Browser.addCloseWindowListener(CloseWindowListener listener)钩住由javascript触发的事件window.close

如果您的程序确实提示退出 Eclipse,您应该搜索实现CloseWindowListener 接口的类。根据需要修改其行为。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-12
    • 1970-01-01
    • 2018-07-26
    • 2014-05-23
    • 2019-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多