In the following, IE is used instead of Internet Explorer, and MF is used instead of Mozzila Firefox
1. document.form.item problem
(1)Existing problems:
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
(3)Others
See 2
2. Problems with collection objects
(1)Existing problems:
Many collection class objects in the existing code use () when accessing them. IE can accept this, but MF cannot.
(2)Solution:
Use [] for subscripting instead. For example: document.forms("formName") is changed to document.forms["formName"].
Another example: document.getElementsByName("inputName")(1) is changed to document.getElementsByName("inputName")[1]
(3) Others
3. window.event
(1)Existing problems:
Not working on MF using window.event
(2)Solution:
MF's event can only be used at the scene where the event occurs, and this problem cannot be solved yet. It can be changed like this:
Original code (can run in IE):
<input type="button" name="someButton" value="Submit" onclick="javascript:gotoSubmit()"/>
...
<script language="javascript">
function gotoSubmit() {
...
alert(window.event); // use window.event
...
}
</script>
New code (can run in IE and MF):
<input type="button" name="someButton" value="Submit" onclick="javascript:gotoSubmit(event)"/>
...
<script language="javascript">
function gotoSubmit(evt) {
evt = evt ? evt : (window.event ? window.event : null);
...
alert(evt); // use evt
...
}
</script>
In addition, if the first line of the new code does not change and is the same as the old code (that is, the gotoSubmit 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 directly as the variable name of the subordinate object of the document. Not possible in MF.
(2)Solution
Use getElementById("idName") instead of idName as an object variable.
5. Problem with obtaining object using idName string
(1)Existing problems
In IE, you can use eval(idName) to get the HTML object with the id idName, but not in MF.
(2)Solution
Use getElementById(idName) instead of eval(idName).
6. The problem that the variable name is the same as the ID of an HTML object
(1)Existing problems
In MF, because the object id is not used as the name of the HTML object, 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 they can run normally in IE.
In addition, it is best not to take the same variable name as the HTML object id to reduce errors.
(3)Others
See question 4
7. Event.x and event.y issues
(1)Existing problems
In IE, the event object has x, y attributes, but not in MF.
(2)Solution
In MF, the equivalent of event.x is event.pageX. But event.pageX is not available 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 it to be exactly the same, you can go through a little more trouble:
mX = event.x ? event.x : event.pageX;
Then use mX instead of event.x
(3)Others
event.layerX exists in both IE and MF. Whether the specific meaning is different has not yet been tested.
8. About frame
(1)Existing problems
In IE, you can use window.testFrame to obtain the frame, 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:
<frame src="xx.htm" id="frameId" name="frameName" />
Then ie can access the window object corresponding to this frame through id or name, 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: window.top.frameId or window.top.frameName to access this window object
mf: This window object can only be accessed through window.top.frameName.
In addition, window.top.document.getElementById("frameId") can be used in both mf and ie to access the frame tag and window.top.document. getElementById("testFrame").src = 'xx.htm' to switch the content of the frame, you can also use window.top.frameName.location = 'xx.htm' to switch the content of the frame. For a description of frame and window, see bbs 'window and frame' article and the tests under the /test/js/test_frame/ directory
----adun 2004.12.09 Modification
9. In mf, the attributes defined by yourself must be obtained by getAttribute()
10. There is no parentElement parement.children in mf but use
parentNode parentNode.childNodes
The meaning of the subscript of childNodes is different in IE and MF. MF uses DOM specification, and blank text nodes will be inserted into childNodes.
Generally, this problem can be avoided through node.getElementsByTagName().
When a node is missing in html, IE and MF interpret parentNode differently, for example
<form>
<table>
<input/>
</table>
</form>
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. You must use the following method node.parentNode.removeChild(node)
11.const Problem
(1)Existing problems:
The const keyword cannot be used in IE. Such as const constVar = 32; This is a syntax error in IE.
(2)Solution:
Do not use const, use var instead.
12. body object
The body of MF exists before the body tag is completely read by the browser, while IE must exist after the body is completely read.
13. url encoding
In js, if you write a url, just write "don't write". 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 the xml specification, and the requirement & is written as &
Generally, MF cannot recognize & in js.
14. nodeName and tagName problem
(1)Existing problems:
In MF, all nodes have nodeName value, but textNode does not have tagName value. In IE, the use of nodeName seems like
There is a problem (I haven't tested the specific situation, but my IE has died several times).
(2)Solution:
Use tagName but should detect if it is empty.
15. Element attributes
The input.type attribute is read-only under IE, but can be modified under MF.
16. Problems with document.getElementsByName() and document.all[name]
(1)Existing problems:
In IE, getElementsByName() and document.all[name] cannot be used to obtain div elements (it is not known whether there are other elements that cannot be obtained).