0

我在生成不正确标记的链接按钮时遇到了一些问题。

它应该生成如下内容:

<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 过渡,但我认为它没有验证,因为锚标签内不能有 div 标签。

4

1 回答 1

0

你怎么看那个标记?在萤火虫?在安装了 TidyHTML 的 FF 源代码查看器中?

使用什么 (X)HTML 声明?HTML 4.1?XHTML 过渡?严格的?

我问的原因是<a>标签被定义为内联元素,因此将其包装在元素(例如<div>标签)周围是不合法的。

您在 FF 中看到的源代码可能已经更正以处理此问题,方法是在 div 标记内部和末尾添加额外的锚标记。

你怎么看那个标记?在萤火虫?在安装了 TidyHTML 的 FF 源代码查看器中?

使用什么 (X)HTML 声明?HTML 4.1?XHTML 过渡?严格的?

我问的原因是<a>标签被定义为内联元素,因此将其包装在元素(例如<div>标签)周围是不合法的。

您在 FF 中看到的源代码可能已经更正以处理此问题,方法是在 div 标记内部和末尾添加额外的锚标记。


不,查看源代码是 FF 修复的——如果你想检查这个,你可以安装ViewSourceWith 插件,并在你选择的记事本中查看源代码——我注意到这两者之间的区别。

与 ASP.NET 1.1 不同,ASP.NET 2.0 中的 BrowserCaps 可以识别 FF、Safari 等,因此一般输出与您在 IE 中看到的应该没有什么不同。

于 2009-12-09T20:28:23.477 回答