4

我有一个页面,由具有错误 LI 元素的服务器生成,带有两个结束 li 标签

<li>Whatever</li></li>

所有 jQuery 操作在 Firefox 中都能正常工作,但在 IE(7 和 8)中却不行。我想</li>在开始我的功能之前删除重复项,我该怎么做?

4

2 回答 2

4

无法通过客户端修复,除非您的浏览器不符合逻辑。jQuery 控制的是 DOM,而不是原始的 HTML,因此,它无法编辑已清理的损坏标签。只需修复您的服务器端脚本。

如果你真的想要一个 hacky、可怕、糟糕的 JS 解决方案,你可以在页面加载后 AJAX 请求页面本身,从页面中删除 AJAX 调用(以避免无限循环),删除损坏的元素,然后加载那个 HTML在新窗口中。请永远不要那样做。

于 2012-06-27T21:05:59.333 回答
1

如果可能,您当然应该修复生成页面的代码。

如果这是不可能的,那么你前面的路很坎坷。您无法修复标记,因为它在您对其进行任何处理之前已被解析,因此您必须修复浏览器从损坏的标记生成的任何内容。

每个浏览器都有不同的方式来处理不正确的代码,因此您必须测试您可以使用的所有可能的浏览器,包括 Internet Explorer 的每个当前版本(7、8、9、10 和可能的 6)。这很麻烦,因为一次只能安装一个版本的 IE。幸运的是,您可以使用较新版本的开发人员工具来模拟旧版本,但它仍然不是 100% 准确的模拟。

有些浏览器可能会忽略额外的结束标签,有些浏览器会添加额外的列表元素。您必须编写代码来处理每个浏览器从标记生成的任何内容,并修复元素。

于 2012-06-27T21:18:20.380 回答