2009-12-09 50 views
0

我在鏈接按鈕生成不正確的標記時遇到了一些問題。ASP.NET鏈接按鈕生成錯誤標記

應該產生這樣的:

<div style="margin-top: 5px; width: 150px; margin-left: auto; margin-right: auto;"> 
    <a onclick="return JSConfirm('Confirm?');" id="ctl00_cntPrincipal_btnCancel" 
    class="round-corner opt-upload cancel" href="javascript:__doPostBack('ctl00$cntPrincipal$btnCancel','')"> 
     <div> 
      <span class="border top"> 
       <span class="border"> 
       </span> 
      </span> 
      <span class="icon cancel"> 
       Cancel 
      </span> 
      <span class="border bottom"> 
       <span class="border"> 
       </span> 
      </span> 
     </div> 
    </a> 
</div> 

公告只有一個標籤。

它結束了有時會產生這樣的:(!)

<div style="margin-top: 5px; width: 150px; margin-left: auto; margin-right: auto;"> 
    <a onclick="return JSConfirm('Confirm?');" id="ctl00_cntPrincipal_btnCancel" 
    class="round-corner opt-upload cancel" href="javascript:__doPostBack('ctl00$cntPrincipal$btnCancel','')"> 
    </a> 
    <div> 
     <a onclick="return JSConfirm('Confirm?');" id="ctl00_cntPrincipal_btnCancel" 
     class="round-corner opt-upload cancel" href="javascript:__doPostBack('ctl00$cntPrincipal$btnCancel','')"> 
      <span class="border top"> 
       <span class="border"> 
       </span> 
      </span> 
      <span class="icon cancel"> 
       Cancel 
      </span> 
      <span class="border bottom"> 
       <span class="border"> 
       </span> 
      </span> 
     </a> 
    </div> 
    <a onclick="return JSConfirm('Confirm?');" id="ctl00_cntPrincipal_btnCancel" 
    class="round-corner opt-upload cancel" href="javascript:__doPostBack('ctl00$cntPrincipal$btnCancel','')"> 
    </a> 
</div> 

注意,現在3個錨標記。

它只發生在特定服務器上的特定瀏覽器上,服務器在IIS 6上運行ASP.NET 2.0並使用Firefox 3.5訪問該頁面。

更新:我查看代碼使用FF查看源代碼,沒有插件安裝,該文件被認爲是XHTML 1.1 Transitional,但我不認爲它驗證,因爲你不能有錨標籤內的div標籤。

回答

0

您是如何看到該標記的?在Firebug中?在安裝了TidyHTML的FF源代碼查看器中?

HTML聲明正在使用什麼(X)? HTML 4.1? XHTML過渡?嚴格?

我之所以這樣問,是該<a>標籤定義爲內嵌元素,所以它是不合法的,它環繞一個元素,如<div>標籤。

您在FF中看到的源可能已被更正爲處理此問題,方法是在div標記內部和末尾添加其他錨標記。

你怎麼看到這個標記?在Firebug中?在安裝了TidyHTML的FF源代碼查看器中?

HTML聲明正在使用什麼(X)? HTML 4.1? XHTML過渡?嚴格?

我之所以這樣問,是該<a>標籤定義爲內嵌元素,所以它是不合法的,它環繞一個元素,如<div>標籤。

您在FF中看到的源可能已被更正爲處理此問題,方法是在div標記內部和末尾添加其他錨標記。


不,查看源文件是FF修復它 - 如果你要檢查這一點,您可以安裝ViewSourceWith plugin,並查看源在您選擇的記事本 - 我注意到這兩者之間的差異。

與ASP.NET 1.1不同,ASP.NET 2.0中的BrowserCaps確實可以識別FF,Safari等,所以一般的輸出不應該和IE中看到的不一樣。

+1

我不認爲視圖源會添加任何內容,它是來自頁面的純文本,不是嗎? 也許ASP.NET會這樣做。 – 2009-12-09 20:39:51

+0

這個問題還提到Firefox嘗試(和失敗)來糾正標記:http:// stackoverflow。com/questions/1318941/firefox-rendering-html-incorrect-sometimes 也許這是某種配置,或者這種行爲記錄在某處... – 2009-12-10 20:13:22