【问题标题】:Android webview html compliance?Android webview html 合规性?
【发布时间】:2011-05-19 21:23:21
【问题描述】:

我有一个 webview 显示我在运行时生成的一些 HTML。这个 html 在 chrome 和 IE 中工作,但是当我尝试将它加载到 webview 中时,它告诉我“网页不可用”我正在使用基本的 HTML 元素:

<body bgcolor="01517f">
    <table>
        <font color="ffffff" size="4">
            <p>
                <a href="http://www.gim.net/Customized/Uploads/Screenshot532011-33538-PM.jpg">
                    <img src="http://www.gim.net/Customized/Uploads/Screenshot532011-33538-PM.jpg" width="160" height="240" align="right">
                </a>
                Message body
            </p>
            <table width="95%" cellpadding="3" cellspacing="0" >
                <tr>
                    <td>
                        <b>
                            <font size="3" color="ffffff">
                                parent1
                            </font>
                        </b>
                    </td>
                    <td>
                        <p align="right">
                            <font size="2" color="ffffff">
                                This will be the date string
                            </font>
                        </p>
                    </td>
                </tr>
                <tr>
                    <td colspan ="2">
                        <p align="left">
                            <font size="3" color="ffffff">
                                Blah blah
                            </font>
                        </p>
                    </td>
                </tr>
            </table>
            <hr noshade size="1" />
        </font>
    </table>
</body>

由于某种原因,如果我删除嵌套表,它似乎显示正常。关于我如何格式化我的 HTML 是否有一些非标准的东西会使其无法与 android webview 一起使用?

编辑: 经过彻底的排除测试,我发现有问题的错误来自第二个表的“width='95%'”属性。如果我将其更改为设定的像素宽度(例如:width="160px"),它会起作用。我需要这个宽度是强制该表格中的那些元素位于图像下方,同时仍占据页面的大部分宽度,不知道我的页面会有多大,因为我不知道屏幕有多大我可能正在与 is 合作。

我应该只计算屏幕尺寸,然后以这种方式手动设置像素宽度,还是有一些更简单的方法可以强制在右侧对齐的图像和它下面的表格之间中断?

【问题讨论】:

  • 您缺少 tbody 标签并且不使用字体。使用 css 设置样式

标签: android html webview


【解决方案1】:

问题是当您在其上调用loadData 时,Android webview 尝试访问 HTML 数据的方式。我注意到当我收到错误时,它试图访问的“网址”基本上是我的 HTML 代码作为 URL,用它们的 http 友好版本替换非标准字符(例如空格字符的 %20)。所以我只是用 % 符号 ( %25 ) 的代码替换了“width='95%'”中的 % 符号,它现在可以正常工作了。不需要 CSS 或类似的东西

【讨论】:

    【解决方案2】:
    1. font-标签已过时
    2. 应设置颜色和文本大小 使用 CSS
    3. 如果您想将您的文本对齐到 离开,你可以简单地做到这一点 使用text-align CSS
    4. align-属性也已弃用。 使用 CSS 来做到这一点。
    5. img-标签应该总是有一个 alt-属性,除非它们是 布局的一部分。
    6. widthheight-属性都是 不推荐使用,使用 CSS 来做到这一点。 另外,不要使用没有任何数字的数字 单元。如果你想要 140 像素 写140px(除非你想要0, 这只是 0 没有任何单位)。
    7. 我不确定这是不是因为这个 被剪断了,但是一个 HTML 页面 以&lt;html&gt;-Tag 开头并具有 &lt;head&gt;-标签前 &lt;body&gt;-标签。
    8. HTML 页面应始终具有 Doctype-Declaration。

    如果您不确定您的 HTML 是否有效,请转至 Validate it

    另外,我不明白您使用第一个表的目的。它根本什么都不做。它甚至没有 TableRow 或一些 TableData 。这是无效的,对任何事情都没有好处。剪掉吧。

    【讨论】:

    • 有什么办法可以在不使用 CSS 的情况下解决这个问题?我觉得这对于显示一些简单的格式化文本来说过于复杂了。更不用说我不知道​​关于 CSS 的第一件事,也不知道我什至会如何在 android 中使用它
    • 另外,如果字体已经过时,这并不能解释为什么它在没有嵌套表的情况下也能工作,因为开头有一个字体标签
    • 1.如果你想格式化一些东西并遵守标准,你应该使用 CSS。就是这样。 2. 这并不意味着font-Tag 不再起作用。但常见的方法是使用 CSS,一些较新的浏览器现在(或将来)可能会移除对这个标签的支持。
    • 我没有尝试创建整个页面,只是用 HTML 格式化一些文本和图像,如果 android 不支持 CSS 则不是有效的解决方案
    • Android 肯定支持 CSS。 Android 浏览器是基于 Webkit 的,例如 Chrome。您说,当您取出第一个table-tag 时,它会起作用。所以把它拿出来,它什么也没做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-08
    • 2010-10-28
    • 2023-03-24
    相关资源
    最近更新 更多