gpt4 book ai didi

cocoa - WebVIew 问题 HTML5 文档类型

转载 作者:行者123 更新时间:2023-12-03 17:24:53 25 4
gpt4 key购买 nike

想象一个相当简单的 HTML 文档

<!DOCTYPE HTML >
<html>
<body>
<table> <tr> <td> This is a test </td> </tr> </table>
</body>
</html>

我们在哪里应用此 css

body {background-color: ffffff;
font-size:100px;
font-style: normal;
font-family: MankSans,Arial,Helvetica, sans-serif;
}

在每一个现代浏览器中都会应用字体属性。然而在我的 WebView 中,他们不会。

环顾四周,我发现问题在于 WebView 进入怪异模式,其中 td 标记缺乏继承,因此正文 css 不适用。

我知道有一些方法可以解决这个问题,例如使用更明确的 4.01 文档类型,或者将其添加到 css

table, thead, tbody, tr, td, th {
font-size: inherit;
font-family: inherit;
}
然而,这些并不能解决问题的根源,即当所有其他基于 WebKit 的浏览器(Safari、Chrome 等)都正常运行时,WebView 决定反对所有逻辑,突然“误解”HTML5 文档类型并切换到怪异模式.

有什么方法可以通过编程解决这个问题吗?

最佳答案

好吧,我的愚蠢错误
事实证明,文档类型被搞砸了,因为在将 HTML 文档发送到 webview 之前,我正在对其进行处理,并向所有标签添加内部 ID(我的应用程序内部的功能需要此内部 ID)

但如果有人像我一样搞砸了并想知道发生了什么,我会提供一个冗长的解释。

DOMDocumentType 有几个字段,其中有 name、publicId 和 systemId。

例如,考虑典型的 HTML 4.01 过渡文档类型

可以分为

名称=html
publicId = -//W3C//DTD XHTML 1.0 Transitional//EN
系统ID = http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd

只要保留格式,您就可以向其添加自定义 ID,如下所示

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" CustomID="1">

HTML 5 DOCTYPE 的问题是,虽然它看起来像 a)

<!DOCTYPE html>

对于 DOM,它实际上是 b)

<!DOCTYPE html PUBLIC "" "">

长话短说,在 a) 末尾添加我的 CustomID="1"导致 DOM 无法将其识别为有效的 DOCTYPE,因此将我的 WebView 切换到怪异模式。如果您想要一个 HTML5 DOCTYPE 并向其添加自定义 id,您应该这样做

<!DOCTYPE html PUBLIC "" "" CustomId="1">

w3schools.com 告诉我们 id 属性在以下位置无效:base、head、html、meta、script、style 和 title。

他们应该警告我们,如果放置不当,它也会搞砸你的 DOCTYPE =)

关于cocoa - WebVIew 问题 HTML5 文档类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9365716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com