• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    javascript下4個跨瀏覽器必備的函數_javascript技巧

    來源:懂視網 責編:小采 時間:2020-11-27 20:47:48
    文檔

    javascript下4個跨瀏覽器必備的函數_javascript技巧

    javascript下4個跨瀏覽器必備的函數_javascript技巧:下面四個函數就是其中的一部分。 首先我們要添加一段瀏覽器檢測腳本: 代碼如下: /************************************ * 檢測瀏覽器 ***********************************/ var user = navigator.userAgent; var
    推薦度:
    導讀javascript下4個跨瀏覽器必備的函數_javascript技巧:下面四個函數就是其中的一部分。 首先我們要添加一段瀏覽器檢測腳本: 代碼如下: /************************************ * 檢測瀏覽器 ***********************************/ var user = navigator.userAgent; var

    下面四個函數就是其中的一部分。

    首先我們要添加一段瀏覽器檢測腳本:
    代碼如下:
    /************************************
    * 檢測瀏覽器
    ***********************************/
    var user = navigator.userAgent;
    var browser = {};
    browser.opera = user.indexOf("Opera") > -1 && typeof window.opera == "object";
    browser.khtml = (user.indexOf("KHTML") > -1 || user.indexOf("AppleWebKit") > -1 || user.indexOf("Konqueror") > -1) && !browser.opera;browser.ie = user.indexOf("MSIE") > -1 && !browser.opera;
    browser.gecko = user.indexOf("Gecko") > -1 && !browser.khtml;
    if ( browser.ie ) {
    var ie_reg = /MSIE (\d+\.\d+);/;
    ie_reg.test(user);
    var v = parseFloat(RegExp["$1"]);
    browser.ie55 = v <= 5.5;
    browser.ie6 = v <= 6;
    }

    一) 添加事件綁定 bind()
    這個想必大家都已知道。IE 的事件綁定函數是 attachEvent;而 Firefox, Safari 是 addEventListener;Opera 則兩種都支持。下面進行封裝。
    代碼如下:
    /************************************
    * 添加事件綁定
    * @param obj : 要綁定事件的元素
    * @param type : 事件名稱。不加 "on". 如 : "click" 而不是 "onclick".
    * @param fn : 事件處理函數
    ************************************/
    function bind( obj, type, fn ) {
    if ( obj.attachEvent ) {
    obj['e'+type+fn] = fn;
    obj[type+fn] = function(){obj['e'+type+fn]( window.event );}
    obj.attachEvent( 'on'+type, obj[type+fn] );
    } else
    obj.addEventListener( type, fn, false );
    }
    例如添加一個頁面點擊事件:

    bind(document, "click", function() {
    alert("Hello, World!!");
    });

    二) 刪除事件綁定 unbind()
    和 bind() 函數參數相同,功能相反。
    代碼如下:
    /************************************
    * 刪除事件綁定
    * @param obj : 要刪除事件的元素
    * @param type : 事件名稱。不加 "on". 如 : "click" 而不是 "onclick"
    * @param fn : 事件處理函數
    ************************************/
    function unbind( obj, type, fn ) {
    if ( obj.detachEvent ) {
    obj.detachEvent( 'on'+type, obj[type+fn] );
    obj[type+fn] = null;
    } else
    obj.removeEventListener( type, fn, false );
    }

    三) 獲取元素的計算樣式
    計算樣式也叫最終樣式,也就是元素最終呈現出來的樣式。IE 用的是元素的 currentStyle 屬性,而其他瀏覽器則是標準的 document.defaultView.getComputedStyle() 方法。
    代碼如下:
    /************************************
    * 返回元素的計算樣式
    * @param element : 元素
    * @param key : 樣式名稱(駱駝)
    ************************************/
    function getStyle(element, key) {
    // 參數不正確
    if ( typeof element != "object" || typeof key != "string" || key == "" )
    return false;

    // 不透明度
    if( key == "opacity" ) {
    if(browser.ie) {
    var f = element.filters;
    if(f && f.length > 0 && f.alpha) {
    return (f.alpha.opacity / 100);
    }
    return 1.0;
    }
    return document.defaultView.getComputedStyle(element, null)["opacity"];
    }

    // 浮動
    if ( key == "float" ) {
    key = (browser.ie ? "styleFloat" : "cssFloat");
    }
    if ( typeof element.currentStyle != "undefined" ){
    return element.currentStyle[key];
    } else {
    return document.defaultView.getComputedStyle(element, null)[key];
    }
    }

    IE 和其他瀏覽器的透明度機制不一樣,這里統一用 opacity 表示透明度。還有,由于 float 是 JavaScript 的保留字,所以瀏覽器對其進行了轉義,IE 用的是 styleFloat,其他則為 cssFloat。這里統一為 float。

    例如:獲取透明度
    代碼如下:
    var a = document.getElementById("test");
    var opacity = getStyle(a, "opacity");

    四) DOM 加載完畢事件綁定 domready()
    domready 和 window.onload 有所不同,window.onload 是頁面所有元素全部加載完畢,包括圖像,視頻等一些東西。而一般情況下我們不需要等那么久,而只需要 DOM 可用即可。
    代碼如下:
    /************************************
    * domready
    * @param fn: 要執行的函數
    ************************************/
    function domready(fn) {
    // 參數不正確
    if(typeof fn != "function")
    return false;
    if(typeof document.addEventListener == "function") { // 非 IE 瀏覽器
    document.addEventListener("DOMContentLoaded", fn, false);
    return;
    }
    var _this = arguments.callee;
    if(_this.ready) // 如果 DOM 已經加載完畢, 則直接執行
    return fn();

    if(!_this.list) // 創建一個待執行函數數組
    _this.list = [];

    _this.list.push(fn);

    if (_this.done) return; // 正在循環檢測則返回
    (function() { // 循環檢測
    _this.done = true;
    try {
    document.documentElement.doScroll("left");
    } catch(error) {
    setTimeout(arguments.callee, 0);
    return;
    }
    // DOM 加載完畢, 執行所有待執行函數
    _this.ready = true;
    for (var i=0, l=_this.list.length; i_this.list[i]();
    }
    })();
    }

    例如:
    代碼如下:
    domready(function(){
    alert("DOM 加載完畢!");
    });

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    javascript下4個跨瀏覽器必備的函數_javascript技巧

    javascript下4個跨瀏覽器必備的函數_javascript技巧:下面四個函數就是其中的一部分。 首先我們要添加一段瀏覽器檢測腳本: 代碼如下: /************************************ * 檢測瀏覽器 ***********************************/ var user = navigator.userAgent; var
    推薦度:
    標簽: 必備 瀏覽器 js
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 亚洲精品成人a在线观看| 欧美成人精品第一区二区 | 国产成人精品久久| 久久亚洲私人国产精品vA| 久久www免费人成精品香蕉| 久久国产免费观看精品| 日韩人妻无码精品久久久不卡| 精品亚洲视频在线观看| 久久久精品一区二区三区| 国产精品v片在线观看不卡| 亚洲精品视频免费观看| 久久99精品国产麻豆婷婷| 91精品国产91久久久久久| www.99精品| 国产精品亚洲精品日韩已满| 中文精品无码中文字幕无码专区| 亚洲欧洲国产精品你懂的| 91视频精品全国免费观看| 久久国产精品99精品国产| 在线观看亚洲精品国产| 人妻少妇精品无码专区动漫| 国产精品亚洲美女久久久| 88久久精品无码一区二区毛片 | 精品国产热久久久福利| 欧美精品手机在线播放| 2021国产成人精品国产| 国产精品免费AV片在线观看| 日本一卡精品视频免费| 亚洲欧洲精品无码AV| 一区二区国产精品| 欧美国产成人精品一区二区三区| 国语自产精品视频| 精品国产一区二区三区久久蜜臀 | 亚洲精品你懂的| 亚洲一二成人精品区| 亚洲愉拍自拍欧美精品| 一区二区三区四区精品视频| 久久亚洲国产欧洲精品一| 久久久91精品国产一区二区三区| 久久国产精品-久久精品| 久久91精品久久91综合|