【问题标题】:Firefox calls <base> urlFirefox 调用 <base> url
【发布时间】:2013-04-11 16:47:24
【问题描述】:

在一个客户的网站上,古代有人将&lt;base&gt;-tag 放在一个非常奇怪的超父磁贴定义中。它只是指自己,可以说它的basicTileLayout.jsp 发出了一个标签:

<base href="http://site.com/layout/basicTileLayout.jsp" />

在头脑中。

该网站现在主要是 GWT。无论如何,由于某些奇怪的原因,Firefox 并且只有 Firefox 有时会在例如单击 DOM 中看起来像这样的 GWT 生成的链接时对该基本 URL 进行 ajax 调用:

<a class="gwt-Anchor" href="javascript:;">Read more</a>

我的第一个想法是,它可能是一些在 FF 中工作方式不同的事件冒泡,并且可能有一些 href="" 在其他浏览器中被 GWT 事件处理阻止时被调用。但是,删除 base-tag 可能会产生一个 GET 到应用程序基本上下文路径(“/”),对吧?这不会发生。所以看起来这个基本标签的存在会触发 FF 进行调用。

我问的原因是这是一个超级全局的 chrome-tile,所以删除基本标签会改变整个网站上的每个相对 href。我很想这样做,但有点害怕:)

更新:

我做了一些 GWT 谷歌搜索,发现了这个与 IE 相关的东西:

https://code.google.com/p/google-web-toolkit/issues/detail?id=5280

我浏览了代码并注意到它似乎只发生在使用 GWT:s Anchor 生成的链接上,而没有从事件处理程序中调用 preventDefault 事件。

然后猜测可能是 Firefox 可能会在调用的 unloadEvent 上执行此 GET 到 base-url,因为我们不阻止默认设置。但是为什么只有当我无法理解的基本标签时才会对 url 进行 ajax 调用。

更新 2:

我尝试在 click 事件上调用 preventDefault 但这没有帮助。如果存在基本标签,则 FF 获取该 url,如果没有,则不会发生任何错误。

高度赞赏的任何指针!

【问题讨论】:

    标签: jsp firefox gwt base


    【解决方案1】:

    原来这是由空的 img-tags 引起的:

    <img src="" class="gwt-Image">
    

    显然,如果头部有一个&lt;base&gt;,Firefox 实际上只会使用它与这个空的 src-attribute 连接,因此对 base 中的 url 进行 GET。没有 webkit 浏览器,IE 也没有。

    这可能是正确的做法。我将参考我在 FF 上读到的问题: https://bugzilla.mozilla.org/show_bug.cgi?id=444931

    【讨论】:

    • 请注意,如果您从逻辑上考虑,这是完全合理的。您提供了一个源 URL,它被正常解析为基础,因此当前页面再次加载。这并不是说规范说它应该像这样工作(我是通过你在错误中的评论来到这里的)。我不知道他们说什么。 (而且无论他们说什么都可能被改变,有足够的理由。)但要注意的是,如果需要的话,不再次加载 URL 将是一种特殊情况。
    • @Jeff - 当然!但是,如果不存在基本标签,我不确定是否有针对默认基础的调用 - 但我没有注意到。这让我感到困惑 - 有一个针对基本标签中的 url 的调用,但没有针对默认的。不过我可能是错的,我还要再检查一次。
    猜你喜欢
    • 2016-01-20
    • 1970-01-01
    • 2010-10-12
    • 1970-01-01
    • 2012-04-28
    • 1970-01-01
    • 1970-01-01
    • 2012-02-03
    • 2013-06-07
    相关资源
    最近更新 更多