How to deal with compatibility issues in JS
This article mainly shares with you how to deal with compatibility issues in JS, hoping to help everyone.
1. Regarding the compatibility issues that arise when obtaining out-of-line styles currentStyle and getComputedStyle
We all know that js cannot obtain out-of-line styles through style Style, when we need to get the out-of-line style:
We usually get the out-of-line style through these two methods:
Under IE: currentStyle
Under Chrome, FF: getComputedStyle(op,false)
Compatible with both browsers:
if(op.currentStyle){
alert(op.currentStyle.width);
’ using ’ s ’ s ‐ ‐ ‐ ‐ ‐ alert(op.currentStyle.width);
## } }
*Note: When solving many compatibility writing methods, if..else..
Encapsulate a function to get out-of-line style: (compatible with all browsers, including lower versions of IE6,7)
funtion getStyle(obj,name){
if( obj.currentStyle){
’’' ## // chrom, ff
RetComputedStyle (obj, false) [name]
##}
#}
Call: getStyle(op,'width');
2. Regarding the compatibility issues that arise when using "index" to obtain each item of a string:
There are also problems with strings Similar to an array, obtain the value of each item through a subscript index,
var str="abcde";
aletr(str[1]);
However, lower version browsers IE6 and 7 are not compatible
Compatibility method: str.charAt(i) //All browsers are compatible
var str="abcde";
for(var i=0;i
alert(str.charAt( i)); //Put back each item in the string
}
3. About getting childNodes in DOM Compatibility issues with child nodes
childNodes: Get child nodes,
--IE6-8: Get element nodes, normal
--Higher version browser: But it will contain text nodes and element nodes (not normal)
Solution: Use nodeType: the type of node and make a judgment
--nodeType=3-->Text Node
--nodeTyPE=1-->Element Node
Example: Get ul All child nodes in it, make the background color of all child nodes turn red
Compatible method for obtaining element child nodes:
var oUl=document.getElementById(' ul');
for(var i=0;i
if(oUl.childNodes[i].nodeType ==1){
oUl.childNodes[i].style.background='red';
}
}
Note: The trouble caused by childNodes above can be completely replaced by the children attribute.
children attribute: only gets element nodes, not text nodes, compatible with all browsers,
is easier to use than the above, so when we usually get child nodes, It is best to use the children attribute.
var oUl=document.getElementById('ul');
var oUl.children.style.background="red";
4. About the problems that occur when using firstChild, lastChild, etc. to obtain the first/last element node
--IE6 -8 times: firstChild, lastChild, nextSibling, previousSibling, get the first element node
(Higher version browsers IE9+, FF, Chrome are not compatible, and the blank text nodes they get)
--Under higher version browsers: firstElementChild,lastElementChild,nextElementSibling,previousElementSibling
(lower version browsers IE6-8 are not compatible)
--Compatible writing method: Find the first element node of ul and change its background color to red
var oUl=document.getElementById('ul');
if(oUl.firstElementChild){
//Higher version browser
oUl.firstElementChild.style.background='red';
}else{
//IE6-8
oUl.firstChild.style.background='red';
}
Related recommendations: Summary of some compatibility and error-prone issues in js Specific analysis of compatibility performance in JavaScript JavaScript string operation methods and Detailed explanation of browser compatibility examples
5 . Regarding the compatibility issues that arise when using event objects
For example: Obtaining the mouse position
IE/Chrom: event.clientX;event.clientY
FF/IE9 or above/Chrom: Pass parameter ev--> ev.clientX;ev.clientY
Get event object compatibility writing method: var oEvent==ev| |event;
document.oncilck=function(ev){
var oEvent==ev||event;
if( oEvent){
alert(oEvent.clientX); #
6. Regarding the compatibility issues arising from binding two identical events to an element: attachEvent/attachEventLister
Event binding: (No Compatibility requires two combinations to make compatibility if..else..)
Used below IE8: attachEvent('event name',fn);
FF,Chrome, IE9-10 uses: attachEventLister('event name',fn,false);
Multiple event bindings are encapsulated into a compatible function:
function myAddEvent(obj, ev,fn){
if(obj.attachEvent){
//IE8 and below
obj.attachEvent('on' +ev,fn);
}else{
//FF,Chrome,IE9-10
obj.attachEventLister(ev ,fn,false);
}
}
myAddEvent(oBtn,'click',function(){
alert(a);
});
myAddEvent(oBtn,'click',function(){
alert(b);
});
7. Problems arising from obtaining the scroll bar distance
When we get the scroll bar scrolling distance:
IE,Chrome: document.body.scrollTop
FF: document .documentElement.scrollTop
Compatible processing: var scrollTop=document.documentElement.scrollTop||document.body.scrollTop
The above is the detailed content of How to deal with compatibility issues in JS. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



Nowadays, many mobile phones claim to support Bluetooth 5.3 version, so what is the difference between Bluetooth 5.3 and 5.2? In fact, they are essentially subsequent updated versions of Bluetooth 5, and there is not much difference in most performance and functions. The difference between Bluetooth 5.3 and 5.2: 1. Data rate 1 and 5.3 can support higher data rates up to 2Mbps. 2. While 5.2 can only reach a maximum of 1Mbps, it means that 5.3 can transmit data faster and more stably. 2. Encryption control enhancement 2. Bluetooth 5.3 improves encryption key length control options, improves security, and can better connect to access control and other devices. 3. At the same time, because the administrator control is simpler, the connection can be more convenient and faster, which is not possible in 5.2.

The performance of i77700 is completely sufficient to run win11, but users find that their i77700 cannot be upgraded to win11. This is mainly due to restrictions imposed by Microsoft, so they can install it as long as they skip this restriction. i77700 cannot be upgraded to win11: 1. Because Microsoft limits the CPU version. 2. Only the eighth generation and above versions of Intel can directly upgrade to win11. 3. As the 7th generation, i77700 cannot meet the upgrade needs of win11. 4. However, i77700 is completely capable of using win11 smoothly in terms of performance. 5. So you can use the win11 direct installation system of this site. 6. After the download is complete, right-click the file and "load" it. 7. Double-click to run the "One-click

The Go language has very good compatibility on Linux systems. It can run seamlessly on various Linux distributions and supports processors of different architectures. This article will introduce the compatibility of Go language on Linux systems and demonstrate its powerful applicability through specific code examples. 1. Install the Go language environment. Installing the Go language environment on a Linux system is very simple. You only need to download the corresponding Go binary package and set the relevant environment variables. Following are the steps to install Go language on Ubuntu system:

With the continuous development of modern technology, wireless Bluetooth headsets have become an indispensable part of people's daily lives. The emergence of wireless headphones frees our hands, allowing us to enjoy music, calls and other entertainment activities more freely. However, when we fly, we are often asked to put our phones in airplane mode. So the question is, can I use Bluetooth headphones in airplane mode? In this article, we will explore this question. First, let’s understand what airplane mode does and means. Airplane mode is a special mode for mobile phones

The software in the win10 system has been perfectly optimized, but for the latest win11 users, everyone must be curious about whether this system can be supported, so the following is a detailed introduction to the win11 software that does not support win10. Come and find out together. Does win11 support win10 software: 1. Win10 system software and even Win7 system applications are well compatible. 2. According to feedback from experts who use the Win11 system, there are currently no application incompatibility issues. 3. So you can upgrade boldly with confidence, but ordinary users are advised to wait until the official version of Win11 is released before upgrading. 4. Win11 not only has good compatibility, but also has Windo

JavaScript tutorial: How to get HTTP status code, specific code examples are required. Preface: In web development, data interaction with the server is often involved. When communicating with the server, we often need to obtain the returned HTTP status code to determine whether the operation is successful, and perform corresponding processing based on different status codes. This article will teach you how to use JavaScript to obtain HTTP status codes and provide some practical code examples. Using XMLHttpRequest

1. Right-click the program and find that the [Compatibility] tab is not found in the properties window that opens. 2. On the Win10 desktop, right-click the Start button in the lower left corner of the desktop and select the [Run] menu item in the pop-up menu. 3. The Win10 run window will open, enter gpedit.msc in the window, and then click the OK button. 4. The Local Group Policy Editor window will open. In the window, click the [Computer Configuration/Administrative Templates/Windows Components] menu item. 5. In the opened Windows component menu, find the [Application Compatibility] menu item, and then find the [Remove Program Compatibility Property Page] setting item in the right window. 6. Right-click the setting item, and in the pop-up menu

Best practices to solve PHP function compatibility issues: Use versioned function names (for example: array_map_recursive()) Leverage function aliases (for example: functionarray_map($callback,$array){...}) to check function availability (for example: if (function_exists('array_map_recursive')){...}) use namespace (for example: namespaceMyNamespace{...})
