JavaScript 覆盖document.createElement 方法 解决window.close在火狐下不兼容问题)
近期项目遇到了问题,有个asp.net web程序仅仅能在IE7 执行。如今xp都淘汰了,大家都用IE8-IE11,因此这个web app也须要升级 适应全部IE版本号。照成IE版本号不兼容的问题主要来致document.createElement方法的调用,如:
function addStyleNo(value, cannotDel) {
if (!value) {
value = '';
}
var tb = $('tbodyStyle');
var tr = tb.insertRow();
var td1 = tr.insertCell();
td1.style.width = '20px';
td1.style.height = '20px';
if (!cannotDel) {
var imgDel = document.createElement("<img alt = '' src='./images/delete.gif' onclick = 'delScTr(this)' style='cursor:pointer' />");
td1.appendChild(imgDel);
}
var td2 = tr.insertCell();
td2.style.height = '20px';
var txt = document.createElement("<input type = 'text' class = 'ip-bx-ro' value = '" + value + "' />");
td2.appendChild(txt);
}
这个系统的js太多太多,大家对这个系统的业务也不熟悉。我先前是把这个document.createElement 用jquery来取代。
var imgDel = jq("<img alt = '' src='./images/delete.gif' onclick = 'delScTr(this)' style='cursor:pointer' />")[0];
var txt = jq("<input type = 'text' class = 'ip-bx-ro' value = '" + value + "' />")[0];
后来发现要改的地方太多了。于是想想有没有简单的方法, 最后把矛头指向覆盖document.createElement 方法的实现。
document.createEl = document.createElement;
document.createElement = function (obj) {
if (obj.toString().indexOf("<") > -1) {
return jq(obj)[0];
}
else {
return document.createEl(obj);
}
}
眼下在ie下还没有发现什么异常情况。
熟悉前端的都知道,火狐默认状态非window.open的页面window.close是无效的
网上有非常多人说,在火狐的地址栏输入:about:config然后找到dom.allow_scripts_to_close_windows;把false改为true
看着这些人的说法,不得不说我蛋疼了
我做的是站点。我怎么去改用户的浏览器设置。我不是搞病毒的啊
难道我在站点公布一个公告“如需用火狐訪问本站点,请改动浏览器器设置……”
那恐怕我会死得非常快
关闭是不可能的。那就搞点折中方案。。跳转到about:blank嘛
<script type="text/javascript">
function CloseWebPage() {
if (navigator.userAgent.indexOf("MSIE") > 0) {
if (navigator.userAgent.indexOf("MSIE 6.0") > 0) {
window.opener = null; window.close();
}
else {
window.open('', '_top'); window.top.close();
}
}
else if (navigator.userAgent.indexOf("Firefox") > 0) {
window.location.href = 'about:blank ';
//window.history.go(-2);
}
else {
window.opener = null;
window.open('', '_self', '');
window.close();
}
}
</script>
JavaScript 覆盖document.createElement 方法 解决window.close在火狐下不兼容问题)的更多相关文章
- JavaScript 覆盖document.createElement 方法
最近项目遇到了问题,有个asp.net web程序只能在IE7 运行,现在xp都淘汰了,大家都用IE8-IE11,因此这个web app也需要升级 适应所有IE版本.照成IE版本不兼容的问题主要来致d ...
- 网页关闭(解决window.close在火狐下不兼容问题)
熟悉前端的都知道,火狐默认状态非window.open的页面window.close是无效的 网上有很多人说,在火狐的地址栏输入:about:config然后找到dom.allow_scripts_t ...
- console.log的一个应用 -----用new方法生成一个img对象和document.createElement方法创建一个img对象的区别
我用两种方法来生成img对象,第一种方法是用new方法,第二种方法是用document.createElement方法. var img1 = new Image(); var img2 = docu ...
- javaScript 对象的hasOwnProperty方法打印window自定义属性
for (var name in window) { if (window.hasOwnProperty(name)) { window.console.log ( name + " : & ...
- document.createElement方法的使用
我们在使用createElemen方法t创建一个元素节点的时候,似乎在IE下面怎么写都可以,但切换到FF等其它浏览器却总是会报错. 比如我们要创建一个input元素,那么在IE下,我们可以有多种写法: ...
- document.createElement()方法
document.createElement()是在对象中创建一个对象,主要和appendChild() 方法或者insertBefore() 方法联合使用. appendChild() 方法在节点的 ...
- window.frames[]在Firefox下无法兼容的解决方式
html代码段: <iframe id="fr" src="ProjectTree.aspx?IsFree=true&f=yes&IsCheckPr ...
- 解决jquery操作checkbox火狐下第二次无法勾选问题
最近在学习jQuery(版本jquery-1.9.1.js),要求用jQuery实现全选/全不选.反选,在IE(IE8)中没有问题,但在火狐浏览器中调试的时候出现了一些小问题,达不到效果. html代 ...
- 解决Clover在win 10下的兼容问题
周五闲的蛋疼,把系统升级到win10.周一早上过来,发现Clover 无法使用了,各种崩溃,查阅了官网,发现Clover确实只兼容到win8.网络上给出解决方案的确是用qttabbar,qttabba ...
随机推荐
- mysql alter example
alter table `user_movement_log` AFTER `Regionid` (在哪个字段后面添加) ) default null; //主键 ) unsigned not nul ...
- Models——英语学习小技巧之四
Models are very important, here model means role model, is kind of like a hero. It's someone that ...
- expect交互式自动化脚本
一 什么是expect 1 Expect is a tool for automating interactive applications such as telnet, ftp, passwd, ...
- C#控件TabControl隐藏page
隐藏 这个需求其实就是TABCONTROL控件会有很多提前制作好的PAGE页面,每次软件启动不可能所有页面都显示出来,目前想了个比较简单的方法解决这个问题 首先定义一个List集合存储TABCONTR ...
- easy ui 学习笔记,不断整理中............
$.message.show({//浏览器右下角弹框,我列出了几个属性,具体请看API title: '提示', msg: '恭 ...
- 四种常见的提示弹出框(success,warning,error,loading)原生JavaScript和jQuery分别实现
原文:四种常见的提示弹出框(success,warning,error,loading)原生JavaScript和jQuery分别实现 虽然说现在官方的自带插件已经有很多了,但是有时候往往不能满足我们 ...
- (92) Is there a better crawler than Scrapy? - Quora
(92) Is there a better crawler than Scrapy? - Quora Is there a better crawler than Scrapy?Edit
- 掌握下面常用函数,学php不再难
一.写入文件 1.打开资源(文件)fopen($filename,$mode) 2.写文件fwrite($handle,$str) 3.关闭文件fclose($handle) 4.一步写入file_p ...
- hdu 4741 Save Labman No.004 [2013年杭州ACM网络赛]
// Time 234 ms; Memory 244 K #include<iostream> #include<cstdio> #include<cmath> u ...
- Oracle闪回操作
Oracle闪回操作 1. 记录当前时间或SCN 在数据库变动前记录时间或SCN SQL> select to_char(sysdate,'YYYY-MM-DD HH24:mi:ss') fr ...