Gwt和页面超链接(#Chapter3)会干扰历史令牌

时间:2012-09-20 09:42:44

标签: html gwt anchor

在我们的gwt应用程序中,一些元素从cms加载并作为“HTML”对象添加到页面。到现在为止,这很好。但是现在增加了一个更大的Html-Page,它有一些锚元素可以跳转到这个html文档的不同部分。 这个锚看起来像这样:

<a href="#Chapter3</a>

问题是这会干扰gwt的历史记录。点击这样的令牌会将应用程序引导至<app address>/#Chapter3,这不是有效的令牌 - 导致启动页面。

那么如何在html页面中添加这样的页面链接?

更新 最后,我希望点击<a href="#Chapter3</a>跳转到同一文档中的<a name="Chapter3</a> - 正常的HTML行为。

3 个答案:

答案 0 :(得分:1)

将ClickHandler附加到HTML小部件:

myHTMLWidget.addClickHandler(new ClickHandler() {
    @Override
    public void onClick(ClickEvent event) {

        // Stop this event
        event.preventDefault();

        Element e = Element.as(event.getNativeEvent().getEventTarget());
        if (e.getAttribute("href").contains("#")) {
            e.scrollIntoView();
        }
    }
});

如果需要,您可以使用不同的滚动行为(例如,滚动到光标位置)。

答案 1 :(得分:-1)

有点粗糙,但您可以尝试在iframe(GWT的Frame)中加载HTML内容。

答案 2 :(得分:-2)

Anchor link=new Anchor("Print",true);