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 ...
随机推荐
- HashMap实现原理及源码分析之JDK7
攻克集合第一关!! 转载 http://www.cnblogs.com/chengxiao/ 哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如m ...
- 《You dont know JS》原生函数
原生函数 原生函数,即JavaScript的内建函数(built-in function).常用的原生函数有String().Number().Boolean().Array().Object().F ...
- Jmeter不同线程组之间的变量引用
用过LoadRunner的小伙伴应该知道,它的脚本主要分为三个部分,即Login,Action,End三个模块.Login中一般是“初始化”环境所用,而Action模块主要做一些诸如压测的动作.举个例 ...
- P1070 道路游戏
题目描述 小新正在玩一个简单的电脑游戏. 游戏中有一条环形马路,马路上有 n 个机器人工厂,两个相邻机器人工厂之间由一小段马路连接.小新以某个机器人工厂为起点,按顺时针顺序依次将这 n 个机器人工厂编 ...
- NYOJ 36 LCS(最长公共子序列)
题目链接: http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=36 最长公共子序列 时间限制:3000 ms | 内存限制:65535 KB ...
- snapkit equalto和multipliedby方法
最近在使用snapkit过程中遇到一个问题,在github上搜索之后发现另外一个有趣的问题 frameImageContainer.snp.makeConstraints({ (make) in ma ...
- weex中UISegmentControl实现及遇到的问题
在最近主导的一个项目中,App端的实现使用了weex.通过近一个月的实践,我们发现如果对于人机交互较少的App,即使较少前端经验的人也能迅速进入开发(当然需要一定时间 才能上手weex).在开发的时候 ...
- 基于vue-cli的快速开发框架
基于vue-cli的快速规范开发框架,已封装常用组件,可直接进行基本项目开发 1,遵循eslint规则,提升代码质量 2,集成mock模拟服务端数据,提升开发效率 3,集成vuex,可直接使用开发 4 ...
- python 第一课作用
1.使用while循环输入 1 2 3 4 5 6 8 9 10 x=0while x<10: x=x+1 if x==7: print(' ') continue print(x)#学 ...
- 在jupyter中安装R的kernal
网上有安装完anaconda后可以直接使用conda 命令安装R的kernal,本人电脑上已经安装了anaconda和R,因此使用手动安装的方式安装. 安装环境: windows 8.1 企业版 An ...