在客戶的網站上,有人在古代把<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