IE10不能显示JSON文件内容
IE7,8,9下Ajax返回后,再执行跳转,会弹出阻止提示框。
所以我采用WebForm 提交思想:
//导出
jv.postOpen = jv.PostOpen = jv.Export = function (url, postJson, op) { var entity = op.entity ;
var target = op.target || entity; var _createIframe = function (id) {
var iframe = jv.toElement('<iframe src="javascript:false;" name="' + id + '" />');
iframe.setAttribute('id', id);
iframe.style.display = 'none';
document.body.appendChild(iframe);
return iframe;
},
_createForm = function (target) {
var form = jv.toElement('<form method="POST"></form>');
form.setAttribute('action', url);
form.setAttribute('target', target);
form.style.display = 'none'; var isSimple = function (type) {
return ["string", "number", "date"].indexOf(type) >= 0;
}; var json = {};
var rec = function (obj, prefix) {
if (jv.IsNull(obj)) return; if (prefix) prefix += "."; for (var k in obj) {
var v = obj[k];
var t = jv.getType(v);
if (isSimple(t)) {
json[prefix + k] = v;
continue;
}
rec(v, prefix + k);
}
}; rec(postJson, ""); if (json) {
for (var k in json) {
form.appendChild(jv.toElement('<input type="hidden" name="' + k + '" value="' + json[k] + '" />'));
}
} document.body.appendChild(form);
return form;
}; if (op.self) {
var iframe = _createIframe(target); var fn = function () {
if (!iframe.parentNode) {
return;
} var response;
var doc = iframe.contentDocument ? iframe.contentDocument : iframe.contentWindow.document; try {
var innerHTML ;
var $html = $(doc.body.innerHTML) ;
var $pre = $html.find("pre");
if ($pre.length == 0 ) innerHTML = $html.text() ;
else innerHTML = $pre.text() ; //ie 返回的pre内容里,有 font ,还额外赠送一个 ^ 号。
if( innerHTML.slice(-1) == '^') innerHTML = innerHTML.slice(0,-1) ; // if (innerHTML.length > 10 && innerHTML.slice(0, 4).toLowerCase() == '<pre' && innerHTML.slice(-6).toLowerCase() == '</pre>') {
// innerHTML = doc.body.firstChild.firstChild.nodeValue;
// } if (innerHTML.length > 1 && innerHTML.slice(0, 1) != "<") {
if ( innerHTML.slice(0, 1) == "{" && innerHTML.slice(-1) == "}"){
response = $.parseJSON( innerHTML) ;
}
else {
response = jv.execJs( innerHTML );
}
}
} catch (err) {
response = { success: false };
} if (response && response.extraJs) jv.execJs(response.extraJs); if (op.callback) op.callback(response,doc);
}; //优先使用 attachEvent , 解决IE9下的BUG。
if (iframe.attachEvent) {
iframe.attachEvent('onload', fn);
}
else if (iframe.addEventListener) {
iframe.addEventListener('load', fn, false);
}
}
else {
var p = { entity: entity };
var whConfig = jv.PopListConfig(p.area, p.entity, p.detail); if (!p.width) {
p.width = whConfig[0];
} if (!p.height) {
p.height = whConfig[1];
} p.openMode = whConfig[2] || target; //多次打印多个窗口 p.entity = entity;
p.autoFocus = false; jv.Pop("", p);
} var form = _createForm(target);
form.submit();
};
但 IE10 下由于无法直接解析 JSON, 在使用该机制时,会弹出下载提示,并且阻止客户端的解析。
解决方案:http://blog.csdn.net/wang_shaner/article/details/6668359
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\MIME\Database\Content Type\application/json]
"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
"Encoding"=dword:00080000 [HKEY_CLASSES_ROOT\MIME\Database\Content Type\text/json]
"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
"encoding"=dword:00080000
经测试,是可行的。但让用户这样干,恐怕不好实行。
另一种方法: 把返回的 Json 标志改为 text/html , 但这也太狗血了。
等着 IE10 SP1 吧。狗血的IE
IE10不能显示JSON文件内容的更多相关文章
- 如何在浏览器网页中显示word文件内容
如何在浏览器网页中显示word文件内容 把word文件读到byte[]中,再Response.OutputStream.Write(bytes)到客户端去 Page_Load事件中写: //FileS ...
- Java 读取Json文件内容
读取json文件为String类型: import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logge ...
- package.json文件内容介绍
概述 每个项目的根目录下面,一般都有一个package.json文件,定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称.版本.许可证等元数据).npm install命令根据这个配置文件, ...
- jquery 获取 json文件内容后,将其内容显示到 下拉列表框中,再将下拉列表中的内容,显示到文本框中
<script type="text/javascript"> $(function(){ $("#huoqv").click(function() ...
- CCLablettf读取显示xml文件内容显示中文
CCDictionary *strings = CCDictionary::createWithContentsOfFile("tips2.xml"); const char *h ...
- Sencha touch 2 入门 -------- DataView 显示服务器端JSON文件数据
今天学习了下DataView如何显示JSON文件数据,废话不多说,直接贴代码: 首先看下文件目录: 然后看下我们要处理的JSON文件,bookInfo.json. { "success&qu ...
- ios本地文件内容读取,.json .plist 文件读写
ios本地文件内容读取,.json .plist 文件读写 本地文件.json .plist文件是较为常用的存储本地数据的文件,对这些文件的操作也是一种常用的基础. 本文同时提供初始化变量的比较标准的 ...
- python操作json文件获取内容
写case时,将case 写到json文件比写到,写python一定要学会处理json 以下,是要处理的json 处理操作包括:打开json文件,获取json文件内容,关闭json文件,读取内容中的对 ...
- 八、Delphi10.3读取JSON文件,并修改JSON数组一条内容后保存到文件
一.我们有一个JSON文件,如下: { "在野": [ { "城池": 0, "武将": 74, "登场年": 190 ...
随机推荐
- 【Agile123】Automated Test in Agile
https://www.infoq.com/articles/thoughts-on-test-automation-in-agile Start Small Balance the cost vs. ...
- BigDecimalUtil 工具类
一.为什么要用BigDecimal? 涉及到加减乘除,用int,double 会出现数据丢失,这个时候就要用BigDecimal. 注意:在new BigDecimal(Double.toString ...
- LayIM.AspNetCore Middleware 开发日记(一)闲言碎语
前言 前几天写博客的时候突然看见了历史上的今天.不禁感慨时光如梭,这系列博客后来被我标注了已经过时,但是还有很多小伙伴咨询我.既然过时就要更新,正好 .NET Core 也出来很久了,于是乎想到把La ...
- 20165302 ch02 课下作业
20165302 ch02 课下作业 作业内容 补充完成课上测试(不能只有截图,要有分析,问题解决过程,新学到的知识点) 完成教材 p97 2.96 2.97,要有完备的测试 发一篇相关内容的博客, ...
- 传入一个integer数组,取出最大、最小值
/** * <p> * 传入一个integer数组,取出最大值 * </p> * @author yunns 2015年11月19日 * @param array * @ret ...
- RegExp exec有记忆性的问题
当 RegExpObject 是作为一个变量时时.每次调用完exec()后.它会在 RegExpObject 的 lastIndex 属性指定的字符处开始检索字符串 string.当 exec() 找 ...
- 四种传值方法(通知、block、属性、NSUserDefaults)
1. 通知传值-一般常用于返回界面的时候,把返回前界面的值传到返回后界面. //前一个界面 //注册通知 [[NSNotificationCenter defaultCenter] addObserv ...
- L2-025 分而治之(图)
(这不会是我最后一天写算法题的博客吧...有点感伤...) 题目: 分而治之,各个击破是兵家常用的策略之一.在战争中,我们希望首先攻下敌方的部分城市,使其剩余的城市变成孤立无援,然后再分头各个击破.为 ...
- Linux 定时清除日志 Log
一.原因 写这篇的原因是项目中log没有定时清除,服务器上项目是用脚本启动,log文件只会在启动时生成一次,这时,由于项目在不断运行中,导致log越来越大.如果删除log文件,还得把项目停掉在启动,这 ...
- swt TableViewer
http://blog.163.com/bluefield_wild/blog/static/8182709520085612235336/ package list; import java.uti ...