2013-08-19 34 views
0

怪癖模式我已經創建了一個動態的JavaScript創建和使用<script>標籤在另一個網站被添加一種形式。使用HTML5在IE9

由該另一網站所用的文檔類型是<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">它使用特殊模式。

我已經採取這種考慮和一切工作在Chrome,Firefox和IE 10.預計然而,當我在IE 9測試及更早版本,則不會顯示在所有的形式建立我的形式。當我打開開發工具時,我可以看到IE 10使用新的怪異模式,但IE 9和更早版本使用IE5怪異模式。

我想知道如果新的怪異模式可以使用IE 9及更早時可以用來顯示該頁面。如果這不可行,我想強制使用標準模式,但只能在使用IE 9或更早版本時使用,並且每隔一段時間使用其他瀏覽器。

我不能使用html5文檔類型,因爲他們的網站是用怪癖模式而不是標準構建的,而且當我使用這種文檔類型時,它們的設計都被破壞了。

+2

你最好的選擇是走出怪癖 –

+0

我真的希望我能做到,但我不能,除非他們想改變他們的設計以符合標準,我懷疑他們會這麼做。我的表單在標準或怪癖中正常工作,但他們的設計是以怪癖模式爲基礎構建的。 – oliboon

+2

2013年使用怪癖模式是完全失敗的設計。誰推動這個議程是完全脫節和阻礙你的項目成功。逃跑! –

回答

2

一旦頁面加載你不能改變模式。而且你不能通過編程來改變它。該辦法強迫頁面到怪癖模式是加載它沒有一個有效的doctype或者在HTML嚴重錯誤。

如果你有一個doctype,但你的頁面仍然以怪癖模式加載,那麼這意味着你的HTML中存在嚴重的錯誤。這會給你更大的問題,而不僅僅是在怪癖模式。你一定要修復這些錯誤。如果你確實想要進入怪癖模式,請刪除文檔類型,但是你應該確實不要讓HTML代碼如此糟糕,即使使用文檔類型也會觸發怪異模式!

您可以通過使用W3C validator來驗證您的HTML以查找這些錯誤。

就在IE10的兩種不同的怪癖模式之間在運行時切換頁面而言,簡單的答案就是你不能這樣做。

對不起。

但是,說實話,這可能是最好的。無論如何,使用怪癖模式是一個完整的災難。它不只是改變佈局模式;它也關閉了瀏覽器的大部分功能(即自1998年以來發明的幾乎所有東西)。

但現在的好消息:

幸運的是,從怪癖模式切換遠是一個更容易比你想象的。

主要佈局問題(不同的盒模型),可以通過添加以下你的CSS的頂部固定:

*{box-sizing:border-box;} 

這是符合標準的方式來設置盒模型的怪癖模式風格的佈局。使用這種簡單的CSS樣式可以解決大多數由於從怪異模式切換到標準模式而導致的佈局問題。

還有其他的怪癖,但它們相對較小,一旦解決了主要問題,應該不會太難處理。其中許多實際上並不是怪癖模式問題,而是舊版IE中的錯誤,原來的編碼器可能不得不繞過他的方式。無論如何,即使您堅持使用怪癖模式,也無法保證這些版本在未來的版本中仍能繼續保持相同的效果,所以無論如何,您最好現在修復它們。

因此,要總結:

  1. 解決您的頁面,以便它加載在標準模式。有效的DOCTYPE和有效的HTML。
  2. 使用box-sizing來減輕交換機造成的主佈局gremlins。
  3. 手動修復剩餘的佈局問題。

這實在比聽起來少很多。誠實。

+0

謝謝你的細節。我會將這些信息傳遞給設計負責人。 – oliboon

+0

@Spudley - 「如果你有一個文檔類型,但你的頁面仍然以怪癖模式加載,那麼這意味着你的HTML中存在嚴重的錯誤。」這是不正確的。 doctype oliboon正在使用'<!DOCTYPE HTML PUBLIC「 - // W3C // DTD HTML 4.01 Transitional // EN」>'會引起怪癖模式。請參閱http://www.w3.org/html/wg/drafts/html/master/syntax.html#the-initial-insertion-mode或http://hsivonen.iki.fi/doctype/ – Alohci