博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
记录:iframe在IE下 document.createElement 兼容
阅读量:4096 次
发布时间:2019-05-25

本文共 2028 字,大约阅读时间需要 6 分钟。

转自:https://blog.csdn.net/luojia_wang/article/details/9665941

IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)

以下代码在IE8下运行通过,在IE9中出错:

document.createElement('<iframe id="yui-history-iframe" src="../../images/defaults/transparent-pixel.gif" style="position:absolute;top:0;left:0;width:1px;height:1px;visibility:hidden;"></iframe>');
错误提示:exception : SCRIPT5022: DOM Exception: INVALID_CHARACTER_ERR (5)

思路分析:
第一步:兼容IE9,firefox,Opera,Safari等浏览器;
var iframe = document.createElement("iframe");
iframe.setAttribute("id", "yui-history-iframe");
iframe.setAttribute("src", "../../images/defaults/transparent-pixel.gif");
iframe.setAttribute("style","position:absolute;top:0;left:0;width:1px;height:1px;visibility:hidden;");

第二步:兼容IE6-8:由于ie6-8 不能修改iframe的name属性

var oFrame = isIE ? document.createElement("<iframe name=/"" + this._FrameName + "/">") : document.createElement("iframe");
oFrame.name = "iframName";

综合解决办法:

var isIE = (document.all) ? true : false;//这里仅仅简单的对是否是IE进行判断,详细浏览器判断:请参考

var ua = navigator.userAgent.toLowerCase().match(/msie ([/d.]+)/)[1];
if (ua == "9.0") {
isIE = false;
}
var oFrame = isIE ? document.createElement("<iframe name=/"" + this._FrameName + "/">") : document.createElement("iframe");
oFrame.name = "iframName";

-----------------------------------------

兼容:为ajax上传创建iframe-----:

function createUploadIframe : function(id, uri) {		//create frame		var frameId = 'jUploadFrame' + id;		if ("ActiveXObject" in window) {			if ($.support.leadingWhitespace) {				var io = document.createElement('iframe');				io.id = frameId;				io.name = frameId;			} else if (!$.support.leadingWhitespace) { //	ie6-8				var io = document.createElement('');				if (typeof uri == 'boolean') {					io.src = 'javascript:false';				} else if (typeof uri == 'string') {					io.src = uri;				}			}		} else {			var io = document.createElement('iframe');			io.id = frameId;			io.name = frameId;		}		io.style.position = 'absolute';		io.style.top = '-1000px';		io.style.left = '-1000px';		document.body.appendChild(io);		return io;	}
你可能感兴趣的文章
DirectX11 平行光
查看>>
DirectX11 点光
查看>>
DirectX11 聚光灯
查看>>
DirectX11 HLSL打包(packing)格式和“pad”变量的必要性
查看>>
DirectX11 光照演示示例Demo
查看>>
VUe+webpack构建单页router应用(一)
查看>>
Vue+webpack构建单页router应用(二)
查看>>
从头开始讲Node.js——异步与事件驱动
查看>>
Node.js-模块和包
查看>>
express的应用
查看>>
NodeJS开发指南——mongoDB、Session
查看>>
Express: Can’t set headers after they are sent.
查看>>
2017年,这一次我们不聊技术
查看>>
实现接口创建线程
查看>>
Java对象序列化与反序列化(1)
查看>>
HTML5的表单验证实例
查看>>
JavaScript入门笔记:全选功能的实现
查看>>
程序设计方法概述:从面相对象到面向功能到面向对象
查看>>
数据库事务
查看>>
JavaScript基础1:JavaScript 错误 - Throw、Try 和 Catch
查看>>