手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >javascript中兼容主流浏览器的动态生成iframe方法
javascript中兼容主流浏览器的动态生成iframe方法
摘要:以下代码在IE8下运行通过,在IE9中出错:复制代码代码如下:document.createElement('');错误提示:excepti...

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

document.createElement('<iframe id="yige-org-iframe" src="yige.org.logo.gif"></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";

//=========================

function ajaxpost(formid, showid, waitid, showidclass, submitbtn, recall) {

var waitid = typeof waitid == 'undefined' || waitid === null ? showid : (waitid !== '' ? waitid : '');

var showidclass = !showidclass ? '' : showidclass;

var ajaxframeid = 'ajaxframe';

var ajaxframe = $(ajaxframeid);

var formtarget = $(formid).target;

var handleResult = function() {

var s = '';

var evaled = false;

showloading('none');

try {

s = $(ajaxframeid).contentWindow.document.XMLDocument.text;

} catch (e) {

try {

s = $(ajaxframeid).contentWindow.document.documentElement.firstChild.wholeText;

} catch (e) {

try {

s = $(ajaxframeid).contentWindow.document.documentElement.firstChild.nodeValue;

} catch (e) {

s = '内部错误,无法显示此内容';

}

}

}

if (s != '' && s.indexOf('ajaxerror') != -1) {

evalscript(s);

evaled = true;

}

if (showidclass) {

$(showid).className = showidclass;

if (submitbtn) {

submitbtn.disabled = false;

}

}

if (!evaled && (typeof ajaxerror == 'undefined' || !ajaxerror)) {

ajaxinnerhtml($(showid), s);

}

ajaxerror = null;

if ($(formid)) $(formid).target = formtarget;

if (typeof recall == 'function') {

recall();

} else {

eval(recall);

}

if (!evaled) evalscript(s);

ajaxframe.loading = 0;

$('append_parent').removeChild(ajaxframe);

};

if (!ajaxframe) {

try {

ajaxframe = document.createElement('<iframe name="' + ajaxframeid + '" id="' + ajaxframeid + '"></iframe>');

} catch (e) {

ajaxframe = document.createElement('iframe');

ajaxframe.name = ajaxframeid;

ajaxframe.id = ajaxframeid;

}

ajaxframe.style.display = 'none';

ajaxframe.loading = 1;

$('append_parent').appendChild(ajaxframe);

} else if (ajaxframe.loading) {

return false;

}

_attachEvent(ajaxframe, 'load', handleResult);

showloading();

$(formid).target = ajaxframeid;

$(formid).action += '&inajax=1';

$(formid).submit();

return false;

}

【javascript中兼容主流浏览器的动态生成iframe方法】相关文章:

JavaScript中的异常处理方法介绍

JavaScript获取两个数组交集的方法

javascript实现在网页任意处点左键弹出隐藏菜单的方法

javascript清空table表格的方法

javascript实现行拖动的方法

JavaScript实现鼠标滑过处生成气泡的方法

javascript实时显示当天日期的方法

在JavaScript中正确引用bind方法的应用

javascript实现树形菜单的方法

javascript中动态函数用法

精品推荐
分类导航