首頁 web前端 js教程 原生javascript相容性測試實例_javascript技巧

原生javascript相容性測試實例_javascript技巧

May 16, 2016 pm 05:30 PM
相容性 原生js

1.取得樣式表裡面的width,border color 之類的css(不是行間) 主要是IE6-7支援currentStyle,標準瀏覽器支援getComputedStyle;

實例:封裝函數

複製程式碼 程式碼如下:

function getStyle(obj,name){
if(obj.
return obj.currentStyle[名稱];
}
else{
return getComputedStyle(obj,false)[名稱];
}
}












>呼叫:getStyle('color'); 2.取得滾動的距離document.body.scrollTop 適用於標準瀏覽器document.documentElement.scrollTop 適用於IE9以下版本document.documentElement.scrollTop 適用於IE9以下版本
相容性可以這樣寫
var top = document.body.scrollTop | document.documentElement.scrollTop;

3.事件物件
標準瀏覽器:事件物件作為事件函數的參數
IE低版本需要直接用event物件(全域)




複製程式碼


程式碼如下:



程式碼如下:


function (ev){
var event = ev || event;
}


現在event就作為了事件物件

4.綁定事件IE 的綁定事件IE 的綁定事件對象
4.定事件為attachEvent/detachEvent(綁定或取消);標準瀏覽器addEventListener/removeEventListener(綁定或取消) 以下是事件綁定或取消的參數,在事件綁定中函數不能是匿名函數否則取消不掉addEventListener的使用方式: target.addEventListener(type, listener, useCapture); target: 文件節點、document、window 或XMLHttpRequest。
type: 字串,事件名稱,不含“on”,如“click”、“mouseover”、“keydown”等。
listener :實作了 EventListener 介面或是 JavaScript 中的函式。
useCapture :是否使用捕捉,一般用 false 。例如:document.getElementById("testText").addEventListener("keydown", function (event) { alert(event.keyCode); }, false);

IE中:

target .attachEvent(type, listener);
target: 文件節點、document、window 或XMLHttpRequest。
type: 字串,事件名稱,含“on”,如“onclick”、“onmouseover”、“onkeydown”等。
listener :實作了 EventListener 介面或是 JavaScript 中的函式。 例如:document.getElementById("txt").attachEvent("onclick",function(event){alert(event.keyCode);});

事件綁定的封裝函數:


複製程式碼 程式碼如下:
function addEvent(obj,ev,fn){
if(obj. attachEvent){
obj.attachEvent('on' ev,fn)
}
else{
obj.addEventListener(ev, fn, false);

}
}
}

這樣的封裝函數如果綁定事件fn函數裡面用到this 需提防this 為window(只有IE低版本有這個bug) 不是obj; 複製程式碼
程式碼如下:


addEvent(document,'click',function(ev){

var ev =ev||window.event;
var target = ev.target||ev.srcElement; // 取得事件來源主要處理IE低版this為window之bug
alert(target)
}) ;

綁定之取消事件fn為函數名字



程式碼:

function removeEvent(obj,ev,fn){
if(obj.detachEvent){
obj.detachEvent('on' ev,fn)
}
else{
obj.removeEventListener(ev, fn, false);

}
}

5.ajax Ajax創建XMLHttppttp低版本不兼容標準版創建XMLHttp對象: 複製代碼 代碼如下: //1.建立物件if(window.XMLHttpRequest) { var oAjax=new XMLHttpRequest();//標準瀏覽器} else { { var oAjax=new ActiveXObject("Microsoft.XMLHTTP");//IE低版本} alert(oAjax);
6.取消預設事件
js中預設事件取消是主要是兩種return false 和preventDefault
取消預設事件中return false 是相容任何瀏覽器但是如果遇到事件綁定的addEventListener 會取消不掉預設事件
取消預設右鍵事件範例:
複製程式碼 程式碼如下:


document.addEventListener('contextmenu',function(ev){
ev.preventDefault();
}))
document.oncontextmenu = function(){
return falsese;
};


7.call與apply 的區別
call、apply 可以調用函數
例如 程式碼如下:


function show(){
alert(this)
}
//show(); 彈出window
//show .call();彈出windwo
//show.call(this) //彈出window
//show.call(5); //彈出5;
show.call(this,5) ; //彈出window


call(this,arg1,arg2,...)可以看出call裡面的參數this主要是指涉事件物件以後參數是函數中用到的參數
用call與apply來主要是修改this的,功能上和普通的函數沒有太大的區別
apply(this,arguments) 主要是對參數不確定來使用
8、DOM取得子節點children和childNodes
children 取得子節點只能是取第一層必須是標籤節點
例如: 代碼如下:

children[0] 這樣只能是取到第一個span 要是想取到第一個a標籤children[0].children[0 ],所以說children的長度只是2; childNodes在高版本上會算上空文本在火狐谷歌上上面的是長度是5;在IE低版本(6-8)長度是4.
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡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脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

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

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1317
25
PHP教程
1268
29
C# 教程
1246
24
藍牙5.3和5.2版本的比較及差異解析 藍牙5.3和5.2版本的比較及差異解析 Dec 28, 2023 pm 06:08 PM

現在有不少手機都號稱支援藍牙5.3版本,那麼藍牙5.3和5.2的區別是什麼呢,其實它們本質上都是藍牙5的後續更新版本,在大部分的性能和功能上是沒有多少區別的。藍牙5.3和5.2的差異:一、資料速率1、5.3能夠支援更高的資料速率最高可達2Mbps。 2、而5.2只能最高達到1Mbps,則表示5.3能夠更快、更穩定的傳輸資料。二、加密控制增強2、藍牙5.3提高了加密金鑰長度控制選項,提高了安全性,能夠更好的連接門禁等設備。 3.同時,由於管理員控制更簡單,在連接的時候還能更加的便利、快速,5.2則無

i7-7700無法升級至Windows 11的解決方案 i7-7700無法升級至Windows 11的解決方案 Dec 26, 2023 pm 06:52 PM

i77700的效能運行win11完全足夠,但是用戶卻發現自己的i77700不能升級win11,這主要是受到了微軟硬性條件的限制,所以只要跳過該限制就能安裝了。 i77700不能升級win11:1、因為微軟限制了cpu的版本。 2.intel只有第八代以上版本可以直升win11。3、而i77700作為7代,無法滿足win11的升級需求。 4.但是i77700在性能上是完全能流暢使用win11的。 5.所以大家可以使用本站的win11直裝系統。 6.下載完成後,右鍵「裝載」該檔案。 7.再雙擊運行其中的「一鍵

瀏覽器相容性 瀏覽器相容性 Sep 14, 2023 am 11:08 AM

瀏覽器相容性設定的方法有選擇合適的HTML和CSS標準、使用CSS前綴和Reset、使用瀏覽器相容性前綴庫、檢測瀏覽器特性、使用瀏覽器相容性工具和進行跨瀏覽器測試。詳細介紹:1、選擇適當的HTML和CSS標準,在編寫HTML和CSS程式碼時,應盡量遵循W3C的標準,不同瀏覽器對標準的支援程度會有所不同,但遵循標準可以最大程度地提高相容性;2、使用CSS前綴等等。

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

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

詳解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

可以使用藍牙耳機在飛航模式下嗎? 可以使用藍牙耳機在飛航模式下嗎? 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.右鍵點選該設定項,在彈出的菜

解決 PHP 函數相容性問題的最佳實踐 解決 PHP 函數相容性問題的最佳實踐 May 01, 2024 pm 02:42 PM

最佳實踐解決PHP函數相容性問題:使用版本化的函數名稱(例如:array_map_recursive())利用函數別名(例如:functionarray_map($callback,$array){...})檢查函數可用性(例如:if (function_exists('array_map_recursive')){...})使用命名空間(例如:namespaceMyNamespace{...})

See all articles