Home > Web Front-end > JS Tutorial > Javascript IE and Firefox Compatibility Compilation (zz)_Basic Knowledge

Javascript IE and Firefox Compatibility Compilation (zz)_Basic Knowledge

WBOY
Release: 2016-05-16 19:19:55
Original
953 people have browsed it

1. document.form.item problem
(1) Existing problem:
There are many statements like document.formName.item("itemName") in the existing code, which cannot be run under MF
( 2) Solution:
Use document.formName.elements["elementName"] instead
(1) Existing problems:
Many collection objects in the existing code use () when accessing them. IE can accept it, but MF cannot.
(2) Solution:
Use [] instead as the subscript operation. For example: document.forms("formName") is changed to document.forms["formName"].
Another example: document.getElementsByName("inputName")(1) changed to document.getElementsByName("inputName")[1]
(3) Others



3 . window.event
(1) Existing problems:
Cannot run on MF using window.event
(2) Solution:
MF’s event can only be used at the scene where the event occurs. This problem cannot be solved yet. It can be modified like this:
Original code (can be run in IE):
New code( Can run in IE and MF):
                                                                                                 If the call does not give parameters), it will still only run in IE, but no error will occur. Therefore, the tpl part of this solution is still compatible with the old code.



4. The problem of using the id of the HTML object as the object name
(1) Existing problems In IE, the ID of the HTML object can be used as the subordinate object variable of the document Use the name directly. Not possible in MF.
(2) Solution
Use getElementById("idName") instead of idName as an object variable.



5. Problems with using idName string to obtain objects
(1) Existing problems In IE, you can use eval(idName) to get the HTML with id as idName Objects, not in MF.
(2) Solution
Use getElementById(idName) instead of eval(idName).



6. The problem that the variable name is the same as an HTML object id
(1) Existing problems
In MF, because the object id is not used as the name of the HTML object, So you can use the same variable name as the HTML object id, but not in IE.
(2) Solution
When declaring variables, always add var to avoid ambiguity, so that it can also run normally in IE.
In addition, it is best not to use the same variable name as the HTML object id to reduce errors.
(3) Other
See Question 4



7. event.x and event.y issues
(1) Existing issues
in IE , the event object has x, y attributes, which are not in MF.
(2) Solution
In MF, the equivalent of event.x is event.pageX. But event.pageX does not exist in IE.
Therefore, event.clientX is used instead of event.x. This variable also exists in IE.
There are subtle differences between event.clientX and event.pageX (when the entire page has scroll bars), but they are equivalent most of the time.



If you want to be exactly the same, you can have a little more trouble:
mX = event.x ? event.x : event.pageX;
Then use mX instead of event.x
(3) Others
event.layerX is available in IE and MF. Whether there is any difference in specific meaning has not yet been tested.




8. About frame
(1) Existing issues
You can use window.testFrame to get the frame in IE, but not in mf
( 2) Solution
The main difference between mf and ie in the use of frame is:
If the following attributes are written in the frame tag:

Then ie can pass id or Name accesses the window object corresponding to this frame
, while mf can only access the window object corresponding to this frame through name
For example, if the above frame tag is written in the htm inside the top window, then it can be accessed like this
ie: Use window.top.frameId or window.top.frameName to access this window object
mf: Only window.top.frameName can be used to access this window object



In addition , in both mf and ie, you can use window.top.document.getElementById("frameId") to access the frame tag
and you can use window.top.document.getElementById("testFrame").src = 'xx.htm ' to switch the content of the frame
You can also switch the content of the frame through window.top.frameName.location = 'xx.htm'
For a description of frame and window, please refer to the 'window and frame' article of bbs
and the tests under the /test/js/test_frame/ directory
----adun 2004.12.09 modified



9. In mf, the attributes you define must be getAttribute() obtains
10. There is no parentElement parement.children in mf but uses
parentNode parentNode.childNodes
The meaning of the subscript of childNodes is different in IE and MF. MF uses the DOM specification and will be inserted into the childNodes Blank text node.
Generally you can avoid this problem through node.getElementsByTagName().
When a node is missing in html, IE and MF interpret parentNode differently, for example



        
   
<script> <BR> function gotoSubmit() { <BR> ... <BR> alert(window.event); // use window.event <BR> ... <BR> } <BR> </script>

The value of input.parentNode in MF is form, while the value of input.parentNode in IE is an empty node



There is no removeNode method for nodes in MF, it must Use the following method node.parentNode.removeChild(node)



11.const issues
(1) Existing issues:
The const keyword cannot be used in IE. For example, const constVar = 32; This is a syntax error in IE.
(2) Solution:
Do not use const and replace it with var.



12. body object
MF’s body exists before the body tag is fully read by the browser, while IE must exist after the body is fully read



13. url encoding
If you write the url in js, write it directly & don’t write it. For example, var url = 'xx.jsp?objectName=xx&objectEvent=xxx';
frm.action = url Then it is very likely that the url will not be displayed normally and the parameters are not correctly transmitted to the server
Generally, the server will report an error that the parameter is not found
Of course, the exception is if it is in tpl, because tpl conforms to xml Specification, requirement & is written as &
General MF cannot recognize & in js




14. nodeName and tagName issues
(1) Existing issues:
In MF, all nodes have nodeName values, but textNode does not have tagName values. In IE, there seems to be a problem with the use of nodeName
(the specific situation has not been tested, but my IE has died several times).
(2) Solution:
Use tagName, but you should check whether it is empty.



15. Element attributes
The input.type attribute is read-only under IE, but can be modified under MF




16 . Issues with document.getElementsByName() and document.all[name]
(1) Existing issues:
In IE, neither getElementsByName() nor document.all[name] can be used to obtain div elements ( It is not known whether there are other elements that cannot be taken).
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template