search
HomeWeb Front-endJS TutorialFront-end browser JavaScript and CSS compatibility summary

Summary of JavaScript and CSS compatibility of front-end browsers


1. getElementById

[Standard Reference]

getElementById is a method provided by the Document interface, used to obtain an element. The parameters passed in by this method should be those of the target element. The value of the id attribute. The id of the target element is a case-sensitive string, and the id should be unique within the document.

【Problem Description】

However, in IE6 IE7 IE8(Q), it is supported to obtain the A APPLET BUTTON FORM IFRAME IMG INPUT MAP META OBJECT EMBED SELECT TEXTAREA element whose name attribute value is elementName through document.getElementById(elementName). And the id is case-insensitive.

【Impact】

This problem will cause the target element to be unable to be obtained in non-IE browsers.

【Solution】

When using the document.getElementById method to obtain page elements, the id attribute value of the element should be passed in instead of the name attribute value of the element, and it is strictly case-sensitive. At the same time, please note that the id attribute value of an element in the page cannot be repeated with the name attribute value of other elements.

In addition, like getElementById, the standard getElementsByName is case-sensitive, but it is not case-sensitive under IE, so it is best to be strictly case-sensitive when we use it.

2. IE will ignore some whitespace characters when creating a DOM tree

[Standard Reference]

Node (node) includes not only element nodes, but also text nodes, comment nodes, attribute nodes, etc. The type of node can be Use nodeType to differentiate.

In HTML source code, text (including whitespace characters) located within and between tags will be created as text nodes.

【Problem Description】

IE will ignore some whitespace characters when creating the DOM tree, so it will create fewer text nodes than other browsers. On the other hand, for the same document, other browsers will create more text nodes than IE.

【Impact】

If user-designed scripts for IE use the nodeList, firstChild, lastChild, previousSibling or nextSibling methods of the node object, they may not be able to achieve the same purpose in other browsers due to this problem, such as script execution. An error occurred, or the operation was performed on the wrong target object.

【Solution】

1. Try to remove the blank characters between each label when it is not necessary.

Because page scripts mostly operate on "element nodes", so just make sure there are no text nodes between elements (that is, there are no blank characters between labels in the source code - including spaces, newlines, and tabs) , you can make the above properties behave consistently across browsers.

In addition, elements created using scripts and added sequentially are closely related to each other. There are no text nodes between elements, so there is no need to worry about the above compatibility issues in this case, such as:

2. Do type judgment when getting nodes.

When it is impossible to guarantee that there are no text nodes between elements, you need to add type judgment to the operation on the nodes.

In addition, in non-IE, you can also use previousElementSibling and nextElementSibling to get the element node, for example: use Element.nextElementSibling to get the next element node adjacent to the element Element.

3. Differences in onscroll events of document, document.body, and document.documentElement objects

[Standard Reference]

scroll event will be triggered when the document or an element is scrolled.

[Problem Description]

There are differences in the support of onscroll events of document, document.body, and document.documentElement objects among various browsers.

All browsers support the scroll events of window and ordinary DIV objects;

In IE and Opera , document and document.body objects support scroll events. Not supported in other browsers;

In IE, the document.documentElement object supports scroll events. Not supported in other browsers.

【Impact】

After binding onscroll events to document, document.body, and document.documentElement objects, the corresponding event handling functions may not be triggered as expected in different browsers.

【Solution】

When binding the scroll event (scroll) to the entire browser window, bind it to the window object.

4. Only the createElement method in IE supports passing in HTML String as parameter

[Standard Reference]

According to the description in the W3C DOM Level2 Core specification, the createElement method under the Document interface can create an element node object instance. It can pass in a string parameter tagName. In HTML, this parameter can be in any form and must be mapped to a compliant uppercase form that can be implemented by the DOM. That is, tagName should be a legal tag name. If illegal characters appear in tagName, an INVALID_CHARACTER_ERR exception should be thrown.

【Problem Description】

In IE6 IE7 IE8, the createElement method can not only create node objects through legal tag names, but also create node objects by passing in a legal HTML code string as a parameter.

【Cause impact】

If you use IE's unique method of creating a node object by passing in a legal HTML code string as a parameter to createElement, an exception will be thrown in other browsers and subsequent code will not be executed.

【Solution】

For general non-replaceable elements, the standard method of passing in the tag name to the createElement method in each browser is used in the W3C specification.

For some IE processing problems with replaced elements, pay attention to judge the browser. For IE, use its unique method of passing a legal HTML code string as a parameter to createElement. Non-IE browsers still use the W3C specification. Standard method, for example:

Incompatible code, only supported by IE:

Var iframe = document.createElement('

Modified:

var iframe = (document. all) ? document.createElement('

iframe.name = "iframe";

5. OuterHTML and innerText of DOM objects , outerText attribute

【Standard Reference】

outerHTML was originally a private property implemented by IE browser. For details, please refer to MSDN description: outerHTML Property.

This attribute has also been newly added to the W3C's HTML5 specification draft, which describes the element itself and its content. When you set this property on a DOM element with a string, the string is rendered as HTML code and replaces the DOM element.

Currently, among mainstream browsers, only Firefox does not support the outerHTML attribute.

【Problem description】

Firefox does not support the outerHTML, innerText, and outerText attributes of DOM objects

【Impact】

Using outerHTML, innerText, and outerText attributes in Firefox will cause the script program to report an error.

【Solution】

None at the moment, please avoid using it as much as possible.

6. IE6 IE7 IE8 Opera supports the 'click' method of other elements except INPUT and BUTTON elements

[Standard Reference]

The "click" method is used to simulate a mouse click event and can be applied to the "type" attribute On the INPUT element whose value is "button" "checkbox" "radio" "reset" "submit", the "click" method specification of other elements is not mentioned.

【Problem Description】

IE6 IE7 IE8 Opera supports the "click" method of other elements except INPUT and BUTTON elements, which makes each browser support the "click" of other elements except INPUT and BUTTON elements. has a difference.

【Impact】

Due to differences in browser support for the "click" method of other elements except INPUT and BUTTON elements, the "click" method of other elements except INPUT and BUTTON elements will be simulated. Functions triggered by mouse clicks do not respond in some browsers.

[Solution]

It is recommended to avoid simulating mouse click events through the "click" method on other elements except INPUT and BUTTON elements.

If you need to use the "click" method on its element to trigger the "onClick" event handler, you can solve it in the following two ways:

* Since in most cases, calling the "click" method is nothing more than executing a certain element The bound event handler function, so you can directly call the "click" event handler corresponding to the element.

* Or use the "createEvent" "initEvent" and "dispatchEvent" methods in the relevant definitions of the DocumentEvent interface, Event interface and Event registration interfaces in the DOM-Level-2-Events standard to create a "click" event and dispatch it. For example:

function createEvent (eventTarget,eventName){

try{

if(eventTarget.dispatchEvent){

var evt = document.createEvent("MouseEvents");

evt.initEvent(eventName,false,true );

eventTarget.dispatchEvent(evt);

}else if(eventTarget.fireEvent){

eventTarget.fireEvent('on'+eventName);

}else{

eventTarget[ type ]();

}

}catch(e){

alert(e);

}

}

createEvent(HTMLElement,'click');

8. Compatibility summary of CSS hack

CSS hack refers to us In order to be compatible with various browsers, special css definition techniques are used. (Note: You should try not to use css hack unless you have to, because its forward compatibility is unknown. A good way is to learn web standard design well and carry out compatibility design from the ground up.) In the following table, I combined a lot of information and Practice using tables written in html code, which is convenient for expansion and updating, but it is difficult to display in the document, so it is divided into two screenshots:

First, let’s take a simple example of distinguishing IE browser from other browsers: color:red; ( Supported by all browsers) color:red9; (supported by IE) color:red

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
C   and JavaScript: The Connection ExplainedC and JavaScript: The Connection ExplainedApr 23, 2025 am 12:07 AM

C and JavaScript achieve interoperability through WebAssembly. 1) C code is compiled into WebAssembly module and introduced into JavaScript environment to enhance computing power. 2) In game development, C handles physics engines and graphics rendering, and JavaScript is responsible for game logic and user interface.

From Websites to Apps: The Diverse Applications of JavaScriptFrom Websites to Apps: The Diverse Applications of JavaScriptApr 22, 2025 am 12:02 AM

JavaScript is widely used in websites, mobile applications, desktop applications and server-side programming. 1) In website development, JavaScript operates DOM together with HTML and CSS to achieve dynamic effects and supports frameworks such as jQuery and React. 2) Through ReactNative and Ionic, JavaScript is used to develop cross-platform mobile applications. 3) The Electron framework enables JavaScript to build desktop applications. 4) Node.js allows JavaScript to run on the server side and supports high concurrent requests.

Python vs. JavaScript: Use Cases and Applications ComparedPython vs. JavaScript: Use Cases and Applications ComparedApr 21, 2025 am 12:01 AM

Python is more suitable for data science and automation, while JavaScript is more suitable for front-end and full-stack development. 1. Python performs well in data science and machine learning, using libraries such as NumPy and Pandas for data processing and modeling. 2. Python is concise and efficient in automation and scripting. 3. JavaScript is indispensable in front-end development and is used to build dynamic web pages and single-page applications. 4. JavaScript plays a role in back-end development through Node.js and supports full-stack development.

The Role of C/C   in JavaScript Interpreters and CompilersThe Role of C/C in JavaScript Interpreters and CompilersApr 20, 2025 am 12:01 AM

C and C play a vital role in the JavaScript engine, mainly used to implement interpreters and JIT compilers. 1) C is used to parse JavaScript source code and generate an abstract syntax tree. 2) C is responsible for generating and executing bytecode. 3) C implements the JIT compiler, optimizes and compiles hot-spot code at runtime, and significantly improves the execution efficiency of JavaScript.

JavaScript in Action: Real-World Examples and ProjectsJavaScript in Action: Real-World Examples and ProjectsApr 19, 2025 am 12:13 AM

JavaScript's application in the real world includes front-end and back-end development. 1) Display front-end applications by building a TODO list application, involving DOM operations and event processing. 2) Build RESTfulAPI through Node.js and Express to demonstrate back-end applications.

JavaScript and the Web: Core Functionality and Use CasesJavaScript and the Web: Core Functionality and Use CasesApr 18, 2025 am 12:19 AM

The main uses of JavaScript in web development include client interaction, form verification and asynchronous communication. 1) Dynamic content update and user interaction through DOM operations; 2) Client verification is carried out before the user submits data to improve the user experience; 3) Refreshless communication with the server is achieved through AJAX technology.

Understanding the JavaScript Engine: Implementation DetailsUnderstanding the JavaScript Engine: Implementation DetailsApr 17, 2025 am 12:05 AM

Understanding how JavaScript engine works internally is important to developers because it helps write more efficient code and understand performance bottlenecks and optimization strategies. 1) The engine's workflow includes three stages: parsing, compiling and execution; 2) During the execution process, the engine will perform dynamic optimization, such as inline cache and hidden classes; 3) Best practices include avoiding global variables, optimizing loops, using const and lets, and avoiding excessive use of closures.

Python vs. JavaScript: The Learning Curve and Ease of UsePython vs. JavaScript: The Learning Curve and Ease of UseApr 16, 2025 am 12:12 AM

Python is more suitable for beginners, with a smooth learning curve and concise syntax; JavaScript is suitable for front-end development, with a steep learning curve and flexible syntax. 1. Python syntax is intuitive and suitable for data science and back-end development. 2. JavaScript is flexible and widely used in front-end and server-side programming.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

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

Hot Tools

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools

SublimeText3 Linux new version

SublimeText3 Linux new version

SublimeText3 Linux latest version

SecLists

SecLists

SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use