在客户的网站上,有人在古代把<base>
-tag放在超级父母瓷砖定义中,这很简单。这只是指本身,可以说,它是basicTileLayout.jsp
的推杆了一个标签:Firefox调用<base> url
<base href="http://site.com/layout/basicTileLayout.jsp" />
的头部
。
该网站是时下大多是GWT。无论如何,一些奇怪的原因,Firefox和唯一的Firefox有时会让一个AJAX调用此基础URL时,例如点击GWT生成的链接看起来像这样在DOM:
<a class="gwt-Anchor" href="javascript:;">Read more</a>
我的第一个想法是,它可能是一些在FF中以不同方式工作的事件冒泡,并且可能有一些href =“”被调用,而在其他浏览器中被GWT事件处理阻止。但是,删除base-tag应该可能会让应用程序的基本上下文路径取而代之(“/”),对吧?这不会发生。所以看起来这个基地标签的存在触发了FF来打电话。
我问的原因是,这是一个超级全局chrome-tile,因此删除基本标记会改变整个站点上的每个相对href。我很想做,但只是一点点吓:)
更新:
我做了一些GWT-谷歌上搜索,发现这个IE相关的啄:
https://code.google.com/p/google-web-toolkit/issues/detail?id=5280
我经历了代码,发现它似乎只发生在使用GWT:s Anchor生成的链接上,而没有从事件处理程序调用事件的preventDefault。
然后,我们可能会猜测Firefox可能会因为我们不阻止默认值而在调用unloadEvent的base-url时进行GET操作。但是为什么只有当我提供的基础标签无法理解时,才会调用url的ajax。
更新2:
我打过电话了preventDefault上的click事件,但是这并不能帮助。如果存在基本标记,则FF会获得该URL,如果没有,则不会发生任何错误。
任何指针高度赞赏!
请注意,如果您考虑这个*逻辑*,这是非常有道理的。你提供了一个源URL,它在正常情况下相对于基地得到了解决,因此当前页面又被加载了。这并不是说规格说它应该像这样工作(我通过你在bug中的评论来到这里)。我不知道他们说什么。(而且他们所说的任何话都可能会被改变,并且有足够的理由。)但是要注意的是,如果这是所谓的话,那么再次加载URL将是一个特殊情况。 – 2013-04-10 16:20:25
+ 1供您分析并与社区分享。 – SSR 2013-04-11 03:55:18
@Jeff - 当然!但是,如果没有base-tag存在,我不确定是否存在对默认基数的调用 - 但我没有注意到它。这让我感到困惑 - 在base-tag中存在对url的调用,但不是默认的。我mighe是错误的,但会再次检查。 – 2013-04-11 08:51:30