2011-05-19 48 views
3

我有一個webview,顯示一些我在運行時生成的HTML。這個HTML適用於Chrome和IE瀏覽器,但是當我試圖將其加載到web視圖,它告訴我「找不到網頁」我使用的是基本的HTML元素:Android 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一起工作。

我應該只是弄清楚屏幕大小,並手動設置像素寬度的方式,或者是有一種更簡單的方法,我可以強制在右邊的圖像和下面的表格之間的中斷?

+0

你錯過了tbody標籤,不要使用字體。使用CSS來設計它的樣式 – Codebeat 2017-01-03 01:13:25

回答

4

問題在於,當您調用loadData時,Android webview嘗試訪問HTML數據的方式。我注意到,當我收到錯誤時,它試圖訪問的「網址」基本上是我的HTML代碼作爲URL,用他們的http友好版本(例如空格字符爲%20)替換非標準字符。所以我簡單地用%符號(%25)的代碼替換了我的「width = '95%'」中的%符號,現在它完美地工作。不需要CSS或類似的東西

2
  1. font標籤都有效陳舊
  2. 顏色和文本大小應該使用CSS
  3. 如果你想你的文本的對齊 留下來設定 ,你可以簡單地使用text-align這個 做 CSS
  4. align -Attribute也被棄用。 使用CSS來做到這一點。
  5. img -Tags應始終有一個 alt-屬性,除非它們是 部分佈局。
  6. widthheight -Attributes 已棄用,請使用CSS來完成此操作。 另外,不要使用沒有任何 單位的數字。如果你想140像素的 寫140px(除非你想0, 這只是0沒有任何單位)。
  7. 我不知道這是否是因爲這個 被剪斷一個,而是一個HTML頁 開始與<html> -Tag和 <body> -Tag之前有一個 <head> -Tag。
  8. 一個HTML頁面應始終有一個 Doctype聲明。

如果您不確定自己的HTML是否有效,請轉至Validate it

此外,我不明白你使用第一張表。它根本就沒有。它甚至沒有TableRow或一些TableData。這是無效的,對任何事情都不好。剪掉它。

+0

有沒有什麼辦法可以解決這個問題而不使用CSS?我覺得這樣做會讓複雜的東西顯示一些簡單的格式化文本。更何況我不知道關於CSS的第一件事,或者我怎麼會在android – 2011-05-19 23:11:25

+0

中使用它。另外,如果字體已經過時,這並不能解釋爲什麼它在沒有嵌套表的情況下工作,因爲在開頭有一個字體標籤 – 2011-05-19 23:16:26

+0

1.如果你想格式化並堅持標準,你應該使用CSS。就是這樣。 2.這並不意味着'font'-Tag不再適用。但常用的方法是使用CSS,一些較新的瀏覽器現在(或將來)可能會取消對該標記的支持。 – 2011-05-19 23:36:11