2013-04-10 61 views
1

在客戶的網站上,有人在古代把<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,如果沒有,則不會發生任何錯誤。

任何指針高度讚賞!

回答

1

原來,這是由空IMG標籤造成的:

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

因此很明顯,如果在頭一個<base>,Firefox會實際上只是用它串聯與此空SRC屬性,因此使GET到基地的網址。沒有webkit瀏覽器,也沒有IE瀏覽器。

這可能是正確的做法。我會參考我在FF閱讀的問題: https://bugzilla.mozilla.org/show_bug.cgi?id=444931

+0

請注意,如果您考慮這個*邏輯*,這是非常有道理的。你提供了一個源URL,它在正常情況下相對於基地得到了解決,因此當前頁面又被加載了。這並不是說規格說它應該像這樣工作(我通過你在bug中的評論來到這裏)。我不知道他們說什麼。(而且他們所說的任何話都可能會被改變,並且有足夠的理由。)但是要注意的是,如果這是所謂的話,那麼再次加載URL將是一個特殊情況。 – 2013-04-10 16:20:25

+0

+ 1供您分析並與社區分享。 – SSR 2013-04-11 03:55:18

+0

@Jeff - 當然!但是,如果沒有base-tag存在,我不確定是否存在對默認基數的調用 - 但我沒有注意到它。這讓我感到困惑 - 在base-tag中存在對url的調用,但不是默認的。我mighe是錯誤的,但會再次檢查。 – 2013-04-11 08:51:30