【问题标题】:GWT: How to suppress hyperlink so that it doesn't change my history tokenGWT:如何抑制超链接,使其不会更改我的历史令牌
【发布时间】:2012-11-23 00:47:13
【问题描述】:

我想让我的超链接像按钮一样(仅响应 Click 事件),但是,当您单击它们时,它们会自动更改历史标记,这会扰乱我的应用程序中的历史机制。有没有办法抑制超链接的默认行为,这样它就不会改变历史令牌?我尝试将 targetHistoryToken 设置为 null,但没有成功。

谢谢,

【问题讨论】:

  • 我不得不问,如果它会像一个按钮一样,那么它不应该是一个按钮吗?用户对您的小部件的行为没有一些期望吗?
  • 公平的问题。我的老板喜欢谷歌阅读器界面,那里的一切都是轻量级的(他们使用链接进行操作)。我想我可以使用一个按钮并更改 css 以使其看起来像一个链接,但我只是想知道我是否可以使用超链接类本身这样做。
  • 嗯...想一想,我可以只使用一个标签并在其上添加一些 css 使其看起来也像一个链接。
  • 是的。这是最好和最简单的解决方案。标签上的一些 ClickHandler 对大多数人来说已经足够了。

标签: events gwt hyperlink gwt-history


【解决方案1】:

请改用Anchor

正如Hyperlink 的 java 文档所说:

如果你想要一个 HTML 超链接(标签)而不与 历史系统,请改用 Anchor。

【讨论】:

    【解决方案2】:

    到目前为止,最简单的方法是创建您自己的扩展 Composite 的类,并将 <a> </a> 呈现为 HTML 小部件。我遇到了同样的问题,这就是我解决它的方法。

    【讨论】:

      【解决方案3】:

      就像 rustyshelf 所说,

      最终 HTML contactLink = new HTML("" + 联系人姓名 + ""); contactLink.addClickHandler(new ClickHandler() { 公共无效 onClick(ClickEvent 事件){ ...... } }

      http://gwt.google.com/samples/Showcase/Showcase.html#CwStackPanel

      【讨论】:

        【解决方案4】:

        只需从 Anchor 中删除 href=""。

        <g:Anchor ui:field="clickField">Click here</g:Anchor>
        

        【讨论】:

        • 也使用这种风格.anchor:hover{ cursor: pointer; }
        【解决方案5】:

        我创建了这个类

        import com.google.gwt.user.client.ui.HTML;
        
        public class HyperlinkWithoutHistoryToken extends HTML {
            public HyperlinkWithoutHistoryToken(String html, boolean wordWrap) {
                super("<a href=\"javascript:undefined;\">" + html + "</a>", wordWrap);
            }
            public HyperlinkWithoutHistoryToken(String html) {
            super("<a href=\"javascript:undefined;\">" + html + "</a>");
            }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-08-16
          • 1970-01-01
          • 2012-09-10
          相关资源
          最近更新 更多