【发布时间】:2013-04-11 16:47:24
【问题描述】:
在一个客户的网站上,古代有人将<base>-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,如果没有,则不会发生任何错误。
高度赞赏的任何指针!
【问题讨论】: