当前位置: 首页 > 图文教程 > 网络编程 > Javascript > 让firefox支持IE的一些方法的javascript扩展函数代码

Javascript
JavaScript教程:浅析JS运行机制
JavaScript类型检测小结
JavaScript内置对象:arguments
编写复杂环境下不出错的Javascript代码
掌握JavaScript语言
IE7中网页动态创建iframe时边框问题
总结常用JavaScript语法107条
AJAX教程(1):AJAX简介
AJAX教程(2):AJAX Http请求
AJAX教程(3):AJAX实例
AJAX教程(4):AJAX 浏览器支持
AJAX教程(5):AJAX-XMLHttpRequest 对象
AJAX教程(6):AJAX - 请求服务器
AJAX教程(7):AJAX - 服务器端的脚本
AJAX教程(8):AJAX 请求实例
AJAX教程(9):AJAX 请求 源代码
AJAX教程(10):AJAX 数据库实例
AJAX教程(11):AJAX XML 实例
AJAX教程(12):AJAX ResponseXML 实例
AJAX教程(13):通过XMLHTTP把文本文件载入HTML元素

Javascript 中的 让firefox支持IE的一些方法的javascript扩展函数代码


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-10   浏览: 269 ::
收藏到网摘: n/a

因为一些代码,只能在IE下实现,如果用firefox实现就必须用一些扩展函数。 这一段使得FireFox也支持IE的innerText方法
复制代码 代码如下:

function isIE(){
if (window.navigator.userAgent.toLowerCase().indexOf("msie")>=1)
return true;
else
return false;
}
if(!isIE()){ //firefox innerText define
HTMLElement.prototype.__defineGetter__( "innerText",
function(){
var anyString = "";
var childS = this.childNodes;
for(var i=0; i <childS.length; i++) {
if(childS[i].nodeType==1)
anyString += childS[i].tagName=="BR" ? '\n' : childS[i].innerText;
else if(childS[i].nodeType==3)
anyString += childS[i].nodeValue;
}
return anyString;
}
);
HTMLElement.prototype.__defineSetter__( "innerText",
function(sText){
this.textContent=sText;
}
);
}

这一段使得FireFox的HTMLElement具有click方法(add click method to HTMLElement in Mozilla)
复制代码 代码如下:

try {
// create span element so that HTMLElement is accessible
document.createElement('span');
HTMLElement.prototype.click = function () {
if (typeof this.onclick == 'function')
this.onclick({type: 'click'});
};
}
catch (e) {
// alert('click method for HTMLElement couldn\'t be added');
}

对HTMLAnchorElement 加入onclick事件
复制代码 代码如下:

try {
// create a element so that HTMLAnchorElement is accessible
document.createElement('a');
HTMLElement.prototype.click = function () {
if (typeof this.onclick == 'function') {
if (this.onclick({type: 'click'}) && this.href)
window.open(this.href, this.target? this.target : '_self');
}
else if (this.href)
window.open(this.href, this.target? this.target : '_self');
};
}
catch (e) {
// alert('click method for HTMLAnchorElement couldn\'t be added');
}

跟踪回车键事件
复制代码 代码如下:

function captureKeys (evt) {
var keyCode = evt.keyCode ? evt.keyCode :
evt.charCode ? evt.charCode : evt.which;
if (keyCode == 13) {
// cancel key:
if (evt.preventDefault) {
evt.preventDefault();
}
var dq = getCookie('default-engine');
if( dq == null) dq = "baidu_txt";
submit_query( dq );
return false;
}
return true;
}