• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • web前端之瀏覽器——兼容各種瀏覽器常用的原生js工具類

    標簽: web  JavaScript  JavaScript進階之路  javascript  瀏覽器  實用工具  前端

    一、獲取瀏覽器可見域的寬高(不包括滾動條和被卷去)

    ieE<=8 不支持innerWidth和innerHeight屬性,ie6支持
    document.documentElement.clientHeight,其他ie版本用document.body.clientHeight

    export function getWinHeight() {
      var windowHeight;
      if (window.innerHeight) { // 除了IE 8 以外的瀏覽器
        windowHeight = window.innerHeight
      } else if (document.documentElement && document.documentElement.clientHeight) { /* IE6 瀏覽器 */
        windowHeight = document.documentElement.clientHeight
      } else if (document.body) { //其他版本的IE瀏覽器
        windowHeight = document.body.clientHeight
      }
      return windowHeight;
    }
    
    export function getWinWidth() {
      var windowWidth;
      if (window.innerWidth) { // 除了IE以外的瀏覽器
        windowWidth = window.innerWidth
      } else if (document.documentElement && document.documentElement.clientWidth) { /* IE6 瀏覽器 */
        windowWidth = document.documentElement.clientWidth
      } else if (document.body) { //其他版本的IE瀏覽器
        windowWidth = document.body.clientWidth
      }
      return windowWidth;
    }
    

    clientHeight/Width指如下:
    在這里插入圖片描述

    二、事件的添加與移除

    ieE<=8 不支持document.addEventListener事件添加與document.removeEventListener事件移除

    export const on = (function() {
      if (document.addEventListener) {
        return function(element, event, handler) {
          if (element && event && handler) {
            element.
            (event, handler, false);
          }
        };
      } else {
        return function(element, event, handler) {
          if (element && event && handler) {
            element.attachEvent('on' + event, handler);
          }
        };
      }
    })();
    
    export const off = (function() {
      if (document.removeEventListener) {
        return function(element, event, handler) {
          if (element && event) {
            element.removeEventListener(event, handler, false);
          }
        };
      } else {
        return function(element, event, handler) {
          if (element && event) {
            element.detachEvent('on' + event, handler);
          }
        };
      }
    })();
    

    三、獲取滾動條寬

    ie不支持瀏覽器滾動條的設定與獲取。elementUI2.13.2版本中獲取滾動條方法如下:

    export scrollbarWidth function() {
      const outer = document.createElement('div');
      outer.className = 'el-scrollbar__wrap';
      outer.style.visibility = 'hidden';
      outer.style.width = '100px';
      outer.style.position = 'absolute';
      outer.style.top = '-9999px';
      document.body.appendChild(outer);
    
      const widthNoScroll = outer.offsetWidth;
      outer.style.overflow = 'scroll';
    
      const inner = document.createElement('div');
      inner.style.width = '100%';
      outer.appendChild(inner);
    
      const widthWithScroll = inner.offsetWidth;
      outer.parentNode.removeChild(outer);
      scrollBarWidth = widthNoScroll - widthWithScroll;
    
      return scrollBarWidth;
    };
    

    ?戳源碼

    版權聲明:本文為qq_29510269原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/qq_29510269/article/details/106334665

    智能推薦

    [轉+整合]瀏覽器兼容與前端性能優化

    一、瀏覽器兼容 1.1、概要 世界上沒有任何一個瀏覽器是一樣的,同樣的代碼在不一樣的瀏覽器上運行就存在兼容性問題。不同瀏覽器其內核亦不盡相同,相同內核的版本不同,相同版本的內核瀏覽器品牌不一樣,各種運行平臺還存在差異、屏幕分辨率不一樣,大小不一樣,比例不一樣。兼容性主要可以分類為: 1)、CSS兼容 2)、JavaScript兼容 3)、HTML兼容 這三類也是前端的主要組成部分,都存在一定的兼容...

    前端瀏覽器兼容性問題

    一、前言 在前端開發過程中我們不可避免地會遇到瀏覽器兼容性問題,這也是我們必須要解決的問題,首先我們來了解一下問什么會出現瀏覽器兼容的問題。 現在市場上有很多類的瀏覽器,不通類型的瀏覽器內核也不同,所以瀏覽器對代碼的解析會出現差異,這就導致頁面渲染不統一的問題。 市場上常見的瀏覽器內核有四種webkit內核、presto內核、trident內核、gecko內核 二、常見的瀏覽器兼容性問題及解決方法...

    前端瀏覽器兼容問題總結

    瀏覽器占比現狀 在各大瀏覽器廠商的發展過程中,他們其實對web的標準都有不同的實現,因為實現的標準的不同,所以會有兼容性的產生,早期IE是在瀏覽器的世界中,占據主導地位。所以它自身實現了很多不同于標準瀏覽器的東西,有css的,也有js的。 從IE8開始,IE瀏覽器漸漸遵循標準,到IE9后由于大家都一致認為標準很重要,可以說在兼容性上比較好了,但是在中國來說,由于xp的占有率問題,還是有很多xp系統...

    前端開發 - 瀏覽器兼容問題(持續更新)

    本文記錄的是個人開發過程中遇到的有關于瀏覽器兼容的問題(持續更新) 一些我們經常遇到的瀏覽器兼容問題 1. ie瀏覽器 1.1 css3中偽類選擇器的兼容性問題(ie8及以下) 對于一些:nth-child(n), nth-last-child,last-child,ie8并不支持,ie只支持:first-child這個選擇器 解決方案 eg: 1.2 rgba() 在IE8下的兼容性問題 sta...

    前端CSS樣式兼容 IE瀏覽器

    僅IE6和IE7識別 圖文 這里是我寫的一個vue組件的css樣式,根據自己的IE版本加入對應的@media...

    猜你喜歡

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    requests實現全自動PPT模板

    http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...

    精品国产乱码久久久久久蜜桃不卡