!!!!!!!!!!!!
分类: LINUX
2011-02-16 19:30:40
文章分类:Web前端
(7)form表单提交问题
在jsp页面有一表单,如果表单里有两个按钮,两个按钮有不同事件方法,问题是 点击一个按钮会同时出发两个按钮的事件方法。
解决办法,看jsp页面中的两按钮标签周围是否被包含有标签,如有删除标签即可。
(8)DOM tree的小问题,
我就是想数一下这个table下有几个子nodes,就是body->table->tbody->然后是两个tr, 所以就应该是2啊,可是alert弹出来的是5,这么弄有什么不对吗
cell 1 cell 2
在ie中,只出现2个nodeName,都是TR,而在firefox中,出现5个nodeName,分别是: #text
TR #text TR #text
检查后,我将代码中的回车删除,代码如下:
cell 1 cell 2
在firefox中,可以看到有2个TR了
在结构上,第一个表单和第二个表单不同的是第一个表单的子节点间有回车或者空格,而第二个表单则是一行写到尾。大家都应该想到了吧,IE是将一个完整标签作为一个节点。而 Firefox除了上述的的情况外,也把一个标签的结束符“>”到下一个标签的起始符“<”之间的内容(除注释外,包括任何的文字、空格、回车、制表符)也算是一个节点了。而且这种节点也有它们自己独特的属性和值--nodeName="#text"。
在实际运用中,Firefox在遍历子节点时,在for循环里不妨加上:
if(childNode.nodeName=="#text") continue;
这样,便跳过不需要的操作,使程序运行的更有效率。
(9)不同浏览器javascript的getYear年份函数兼容问题
不同浏览器 JavaScript 的getyear年份函数兼容性问题
先举个例子
用 Firefox 上一些网站会看到这样的提示
现在时间是 106年8月8日
而用 ie 浏览器的话就显示正常的
原因就是 javascript 的兼容性问题
var today = new date();
var year = today.getYear();
在 Firefox 里面 getYear 返回的是 "当前年份-1900" 的值 (以前都如此)
而微软很NB的做了一个改动:
当today的年份大于等于2000的时候 直接把1900加上了 返回的 200X (而不是10X)
如:today年份是1999 返回99
today年份是2000 返回2000
一个简单的解决是加一个判断:
year = (year<1900?(1900+year):year);//此方法适用IE7 试了不能用
也有另外的方法
通过 getFullYear getUTCFullYear 去调用
var year = today.getFullYear();//IE7无效 此方法可用并在IE与Firefox都可得到
(10)交换两行:
DOM定义了swapNode方法:node1.swapNode(node2) , 但是仅有IE正常使用,Firefox无法工作
可用下面函数来实现(两者都可)
function swapNode(node1,node2)
{
var parent = node1.parentNode;//父节点
var t1 = node1.nextSibling;//两节点的相对位置
var t2 = node2.nextSibling;
if(t1) parent.insertBefore(node2,t1);
else parent.appendChild(node2);
if(t2) parent.insertBefore(node1,t2);
else parent.appendChild(node1);
}
(11)fireEvent在IE中能用但在 Firefox中不能用
var obj=document.getElementById(“loaddate”);
obj.fireEvent(“onclick”);. -------只能在IE可用
解决办法,都可用
if(document.all)
{
obj.fireEvent("onclick");
}
else
{ var evtObj = document.createEvent('MouseEvents');
evtObj.initMouseEvent( "click", true, true, document.defaultView, 1, 0, 0, 0, 0, false, false, true, false, 0, null);
obj.dispatchEvent( evtObj );
}
(12)Firefox不支持innerText,改成innerHTML就可以了
(13)FireFox中类似 obj.style.height = imgObj.height 的语句无效
解决方法:
obj.style.height = imgObj.height + 'px';
(14)有关table处理问题
1):用集合获得表格对象的方法:tabobj.rows[0].cells[0];
2):修改对象的背景图片方法:
obj.style.backgroundImage="url(图片路径)";
3):获得当前对象的下一个结点
obj.firstChild.firstChild.nodeValue
不能用obj.children[0];有待继续研究。
4)table中的bordercolor在Firefox中不能实现功能,必须用CSS实现
(16) iframe两者浏览器都可实现:
allowtransparency="true" align="default" marginwidth="0"
marginheight="0" frameborder="0" scrolling="no"
width="100%"
onload="this.height=0;var fdh=(this.Document?this.Document.body.scrollHeight:this.contentDocument.body.offsetHeight);this.height=fdh">
This message is only visible to older browsers.
(17)css 外部文件导入失效解决:
导入方式:
.STYLE1 {color: #FF0000}
@import url("/carryoa/js/img/jquery.xypform.css");
修改为link导入:
href="/carryoa/js/img/jquery.xypform.css">
(19)
1):用集合获得表格对象的方法:tabobj.rows[0].cells[0];
2):修改对象的背景图片方法:
obj.style.backgroundImage="url(图片路径)";
3):获得当前对象的下一个结点
obj.firstChild.firstChild.nodeValue
不能用obj.children[0];
文章分类:Web前端
10. const 问题
现有问题:
IE:不支持 const 关键字。如 const constVar = 32; 在IE中这是语法错误。
FF:支持
解决方法:不使用 const ,以 var 代替。
11. body 对象
IE:在body标签完全被读入之后才存在
FF:在body标签没有被浏览器完全读入之前就存在
12. 自定义属性问题
IE:可以使用获取常规属性的方法来获取自定义属性,也可以使用getAttribute()获取自定义属性
FF:只能使用getAttribute()获取自定义属性.
解决方法:统一通过getAttribute()获取自定义属性
13. event.srcElement问题
IE:even.srcElement
FF:even.target
解决方法:使用时判断浏览器类型,各用各的。
14. 模态和非模态窗口
IE:支持模态和非模态窗口
FF:不支持
解决方法:直接使用window.open(pageURL,name,parameters)方式打开新窗口。如果需要将子窗口中的参数传递回父窗口,可以在子窗口中使用window.opener来访问父窗口。
15. innerText
IE:innerText
FF:textContent
16. 类似 obj.style.height = imgObj.height 的语句
IE:有效
FF:无效
解决方法:统一使用obj.style.height = imgObj.height + 'px';
文章分类:Python编程
1. HTML 对象的 id 作为对象名的问题
IE:HTML 对象的 ID 可以作为 document 的下属对象变量名直接使用
FF:不支持
解决方法:使用document.getElementById替代document.all
2. 如果控件只有name,没有id, 用getElementById时:
IE:可以找到对象
FF:返回NULL
解决方法:所有控件必须设置ID属性
3. Evel:
IE:支持,利用 eval(idName) 可以取得 id 为 idName 的 HTML 对象
FF:不支持。
解决方法:统一使用getElementById(idName) 代替 eval(idName)。
4. Event:
IE:用全局对象window.event
FF:event只能在事件发生的现场使用,在调用函数时传入event对象
解决方法:使用之前做一下浏览器类型判断,各用各的。
5. 对象名称中美元符号‘$’改为使用下划线‘_’
6. 集合类对象问题
IE:可以使用()或[]获取集合类对象
FF:只能使用[]获取集合类对象
现有代码中存在许多,不能在 FF 下运行
解决方法:统一使用[]获取集合类对象。document.form.item("itemName") 这样的语句改为document.form.elements["elementName"]
7. 变量名与某 HTML 对象 id 相同的问题
IE:不能使用与 HTML 对象 id 相同的变量名
FF:可以使用
解决方法:在声明变量时,一律加上 var ,以避免歧义,这样在 IE 中亦可正常运行。
此外,最好不要取与 HTML 对象 id 相同的变量名,以减少错误。
8. Event定位问题
IE:支持event.x 和event.y
FF:支持event.pageX和event.pageY
解决方法,统一使用event.clientX和event.clientY,但是在FF中event.clientX 与 event.pageX 有微妙的差别(当整个页面有滚动条的时候),不过大多数时候是等效的。如果要完全一样,可以判断浏览器类型后对应使用。
9. 父结点的问题
IE:parentElement parentElement.children
FF:parentNode parentNode.childNodes
childNodes的下标的含义在IE和FF中不同,FF使用DOM规范,childNodes中会插入空白文本节点。一般可以通过node.getElementsByTagName()来回避这个问题。
当html中节点缺失时,IE和FF对parentNode的解释不同,例如
IE:input.parentNode的值为空节点
FF:input.parentNode的值为form
FF中节点没有removeNode方法,必须使用如下方法 node.parentNode.removeChild(node)