Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html Gwt和页面内超链接(第3章)会干扰历史标记_Html_Gwt_Anchor - Fatal编程技术网

Html Gwt和页面内超链接(第3章)会干扰历史标记

Html Gwt和页面内超链接(第3章)会干扰历史标记,html,gwt,anchor,Html,Gwt,Anchor,在我们的gwt应用程序中,一些元素从cms加载,并作为“HTML”-对象添加到页面中。到目前为止,这一切都很好。但是现在添加了一个更大的Html页面,该页面有一些锚元素可以跳转到此Html文档的不同部分。 这个锚看起来像: <a href="#Chapter3</a> 有点粗糙,但您可以尝试在iframe(GWT)中加载HTML内容。将ClickHandler附加到HTML小部件: myHTMLWidget.addClickHandler(new ClickHandler()

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

<a href="#Chapter3</a>

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

将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();
        }
    }
});

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

您是否尝试过使用不带空格的锚点?是-所有锚点都没有空格。“第三章”只是一个例子。你可能想更新你的问题,因为锚不能包含空格,并且可能会给不相关的答案提供理由。=)点击链接时,您希望的行为是什么?我知道链接是你无法控制的内容的一部分,但是根据你的喜好,你可以处理它来忽略点击,或者处理它来制作不同的(有效的)东西。告诉我们:)你在使用活动和场所设计模式吗?首先,我看不出“如何为脚本创建一个锚。锚的href设置为javascript:;,基于监听器将被添加到锚中的预期。”(你提到的方法的java文档)可能会有帮助,第二,内容是从服务器静态传递的,我不想以任何方式对其进行操作。它不起作用-没有效果:新建UiDisplayItem(新标签(标题),Frame.wrap((新HTML(内容)).getElement());将内容包装在
iframe
中不起作用,因为只有在浏览器打开时才会显示
的内容。我的意思是设置框架,使用相对URL从服务器加载内容。内容必须是完整格式的HTML。好的,值得一试,但正如你提到的,它是粗糙的。但覆盖DefaulClickEvent至少同样粗糙:-|。还有一个如此古老的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();
        }
    }
});