首頁 web前端 js教程 解決angular中的瀏覽器相容性問題的方法介紹

解決angular中的瀏覽器相容性問題的方法介紹

Dec 04, 2020 pm 05:39 PM
angular 相容性 前端

angular中的瀏覽器相容性問題怎麼解決?下面這篇文章跟大家介紹一下。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有幫助。

解決angular中的瀏覽器相容性問題的方法介紹

相關教學推薦:《angular教學

##問題#:edge瀏覽器下,固定列的邊框消失

原因:ng-zorro-antd表格元件使用nzLeft和nzRight指令固定的表格列,這兩個指令的實作css3中的標籤:

position: -webkit-sticky !important;
position: sticky !important;
登入後複製
Google、火狐及-webkit-核心的瀏覽器皆支援此屬性(css3),IE不支援此屬性,所以在IE中,會自動降級,表格無固定列,可滑動的形式。

Edge瀏覽器在1703之後的版本使用了chromium內核,對css3的屬性支援較好,也支援sticky屬性,可以使用,可以固定表格列,但邊框會消失。

解決方案目前可行的解決方案有以下幾種:

    不使用固定列,若產品沒有明確要求使用固定列,可以放棄使用nzLeft及nzRight來固定表格。從而使各個瀏覽器下的展示效果一致。
  1. 針對Edge瀏覽器降級處理,與IE瀏覽器效果一致,無固定列,整體可橫向捲動。

  2. 自訂實作固定列,不使用元件的固定列實現,透過使用
  3. position: absolute;這種方式來實現表格的固定列。
第二個方案的詳細過程如下:

使用p包裹表格,當表格寬度超過p寬度時,開啟捲動:

.scroll-table {
  width: 100%;
  overflow-x: scroll;
}
登入後複製
針對表格,我們可以指定寬度,讓其超過外層p寬度(這樣可以看到滾動效果)。

.fixed-table {
  width: 1300px; /* 可由th,td动态扩充,也可指定宽度 */
  border-collapse: collapse;
}
登入後複製
最後一個最核心的問題,就是固定列的實現了,非常簡單,將表格的一列設置成絕對定位,在設置了絕對定位後,該列會脫離原來的文檔流,表格少了一列,所以需要加一個背景板來確保表格能夠為這個固定列留出一個位置。

HTML程式碼大致如下,這個fixed-col可以為固定列的樣式,也可以設定成背景板的樣式,demo中是用其指定了固定列的樣式。

<p class="scroll-table">
    <table class="fixed-table">
        <thead>
            <tr>
                <th>无效背景板</th>
                <th class="fixed-col">固定列</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>无效背景板</td>
                <td class="fixed-col">固定列</td>
            </tr>
        </tbody>
    </table>
</p>
登入後複製
#參考代碼:Ironape


問題:Edge瀏覽器的行事曆(nz-range-picker)確認按鈕需要點兩次

原因:尚未明確

#解決方案

  1. 升級元件版本,目前ng-zorro-antd 8.5之上的版本未見這個問題。
  2. 自訂頁腳,加入額外的頁腳,來取代確定功能,此時有兩種方式來實現:只覆蓋對應的按鈕,如確定按鈕,此時按鈕的樣式與預設的頁腳按鈕是不一致的,為保持一致,可以自訂樣式,也可以直接使用預設頁腳中按鈕的樣式,下例中選擇直接使用元件庫的樣式:ant-calendar -ok-btn,第二步驟是覆寫原來的按鈕,可以使用絕對定位的方式來實現覆蓋:
  3. <nz-range-picker [nzRenderExtraFooter]="renderExtraFooterTpl">
    <ng-template #renderExtraFooterTpl>
      <p>
        <button nz-button nzType="primary" class="ant-calendar-ok-btn abs-right">确 定</button>
      </p>
    </ng-template>
    登入後複製
對應css:

.abs-right {
  position: absolute;
  right: 12px;
  top: 7px;
  z-index: 1;
  box-shadow: none;
}
登入後複製
刪除預設頁腳,完全自訂實作頁尾。此時需要刪除原來的頁腳,可透過:

::ng-deep .ant-calendar-footer-btn {
  display: none;
}
登入後複製
這種方式刪除預設頁腳,此時額外的頁腳無法使用絕對定位。

問題:IE瀏覽器下,在多個tab頁面中切換,echart所在容器高度崩潰

原因:IE瀏覽器下父元素無法動態調整高度(即透過子元素動態改變調整高度)

解決方案 #:固定echart圖表所在的容器高度


問題#:IE瀏覽器下,初始化表單時,觸發表單驗證

原因:這個是IE的問題,IE10 實作了input事件,但是觸發的時機卻是錯誤的。例如在placeholder改變時,placeholder的文字不是英語的時候就會觸發,Edge15 修復了這個問題,但是IE可能永遠不會修復這個問題。

解決方案

  1. 使用表单的reset()重置表单,但是重置的操作需要放在setTimeout中,或者通过其他手段将重置的操作作为表单初始化时的最后一个宏任务执行。这种方式经验证,最终的效果是,初始化表单后,表单输入元素的边框闪烁(红色)一下。
  2. 使用自定义的服务商插件(较为推荐),这种方式对原有代码的破坏性小(遵循了OCP原则),该插件是由DerSizeS提供的。只需要在对应的module中增加一个服务商即可
@NgModule({
    providers: [{
        provide: EVENT_MANAGER_PLUGINS, multi: true,
        useClass: UniqueInputEventPlugin, deps: [UNIQUE_INPUT_EVENT_PLUGIN_CONFIG],
    }]    
})
class MyModule {}
登入後複製
需要注意的是,插件需要自己添加到项目文件中(根据angular团队所说,这个插件修复了一个IE10或者IE11的bug,但是提交了太多的代码,这会给增加现有的应用的打包体积,虽然后面关于这个PR讨论了挺久,但是看样子是准备把这个放到FAQ里面,而不会把他并入框架),并在对应的模块中引用。

另注:IE的输入框会因为placeholder为中文而触发表单验证,placeholder改变了也会触发表单验证,所以,有一个讨巧的方法,placeholder里面的内容写成英文形式(推荐),但这显然不符合中文产品的需求,而且这显然没有国际化。所以可以想办法绕过这一条,使用 HTML实体(已验证,可行),Unicode编码(不可以)

更多编程相关知识,请访问:编程入门!!

以上是解決angular中的瀏覽器相容性問題的方法介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何在Ubuntu 24.04上安裝Angular 如何在Ubuntu 24.04上安裝Angular Mar 23, 2024 pm 12:20 PM

Angular.js是一種可自由存取的JavaScript平台,用於建立動態應用程式。它允許您透過擴展HTML的語法作為模板語言,以快速、清晰地表示應用程式的各個方面。 Angular.js提供了一系列工具,可協助您編寫、更新和測試程式碼。此外,它還提供了許多功能,如路由和表單管理。本指南將討論在Ubuntu24上安裝Angular的方法。首先,您需要安裝Node.js。 Node.js是一個基於ChromeV8引擎的JavaScript運行環境,可讓您在伺服器端執行JavaScript程式碼。要在Ub

PHP與Vue:完美搭檔的前端開發利器 PHP與Vue:完美搭檔的前端開發利器 Mar 16, 2024 pm 12:09 PM

PHP與Vue:完美搭檔的前端開發利器在當今網路快速發展的時代,前端開發變得愈發重要。隨著使用者對網站和應用的體驗要求越來越高,前端開發人員需要使用更有效率和靈活的工具來創建響應式和互動式的介面。 PHP和Vue.js作為前端開發領域的兩個重要技術,搭配起來可以稱得上是完美的利器。本文將探討PHP和Vue的結合,以及詳細的程式碼範例,幫助讀者更好地理解和應用這兩

Angular元件及其顯示屬性:了解非block預設值 Angular元件及其顯示屬性:了解非block預設值 Mar 15, 2024 pm 04:51 PM

Angular框架中元件的預設顯示行為不是區塊級元素。這種設計選擇促進了元件樣式的封裝,並鼓勵開發人員有意識地定義每個元件的顯示方式。透過明確設定CSS屬性 display,Angular組件的顯示可以完全控制,從而實現所需的佈局和響應能力。

Go語言在Linux系統上的相容性如何? Go語言在Linux系統上的相容性如何? Mar 22, 2024 am 10:36 AM

Go語言在Linux系統上的相容性非常好,它能夠無縫地在各種Linux發行版上運行,並且支援不同架構的處理器。本文將介紹Go語言在Linux系統上的兼容性,並透過具體的程式碼範例展示其強大的適用性。 1.安裝Go語言環境在Linux系統上安裝Go語言環境非常簡單,只需要下載對應的Go二進位套件並設定相關環境變數。以下是在Ubuntu系統上安裝Go語言的步驟:

可以使用藍牙耳機在飛航模式下嗎? 可以使用藍牙耳機在飛航模式下嗎? Feb 19, 2024 pm 10:56 PM

隨著現代科技的不斷發展,無線藍牙耳機已成為人們日常生活中不可或缺的一部分。無線耳機的出現解放了我們的雙手,讓我們可以更自由地享受音樂、通話和其他娛樂。然而,當我們乘坐飛機時,我們往往會被要求將手機設定為飛行模式。那麼問題來了,飛航模式可以用藍牙耳機嗎?在本文中,我們將探討這個問題。首先,讓我們來了解飛行模式的作用和意義。飛航模式是手機的特殊模式

WIN10相容性沒了進行找回的操作步驟 WIN10相容性沒了進行找回的操作步驟 Mar 27, 2024 am 11:36 AM

1.右鍵點選程序,發現在開啟的屬性視窗中,沒有找到【相容性】選項卡。 2.在Win10桌面,右鍵點選桌面左下角的開始按鈕,在彈出的選單裡選擇【執行】選單項目。 3.這時會開啟Win10的運行窗口,在窗口中輸入gpedit.msc,然後點選確定按鈕。 4.這時會開啟本機群組原則編輯器窗口,在視窗中依序點選【電腦設定/管理範本/Windows元件】選單項目。 5.在開啟的Windows元件選單中,找到【應用程式相容性】選單項,然後在右側視窗中找到【刪除程式相容性屬性頁】設定項。 6.右鍵點選該設定項,在彈出的菜

前端面試官常問的問題 前端面試官常問的問題 Mar 19, 2024 pm 02:24 PM

在前端開發面試中,常見問題涵蓋廣泛,包括HTML/CSS基礎、JavaScript基礎、框架和函式庫、專案經驗、演算法和資料結構、效能最佳化、跨域請求、前端工程化、設計模式以及新技術和趨勢。面試官的問題旨在評估候選人的技術技能、專案經驗以及對行業趨勢的理解。因此,應試者應充分準備這些方面,以展現自己的能力和專業知識。

詳解win11對win10軟體的相容性問題 詳解win11對win10軟體的相容性問題 Jan 05, 2024 am 11:18 AM

win10系統中的軟體都已經進行了很完美的優化,但是對於最新的win11用戶大家肯定都很好奇是不是可以支持這款系統,所以下面就給你們帶來了win11支不支持win10軟體詳細介紹,快來一起了解一下。 win11支援win10軟體嗎:1、Win10系統的軟體甚至是Win7系統的應用都可以很好的進行相容。 2.經過使用Win11系統的大神回饋目前還沒有出現應用不相容的問題。 3.所以大家可以放心大膽的升級,不過普通的用戶建議等到Win11發表正式版再升級。 4、Win11不僅是相容性好,而且還有Windo

See all articles