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 ...
随机推荐
- Python文件和流
#coding = utf-8 from pprint import pprint import fileinput #read(n) f = open(r'E:\test_dir\somefile. ...
- python110道面试题
1.一行代码实现1--100之和 利用sum()函数求和 2.如何在一个函数内部修改全局变量 利用global 修改全局变量 3.列出5个python标准库 os:提供了不少与操作系统相关联的函数 s ...
- TreeMap实现原理及源码分析之JDK8
转载 Java 集合系列12之 TreeMap详细介绍(源码解析)和使用示例 一.TreeMap 简单介绍 什么是Map? 在数组中我们通过数组下标来对数组内容进行索引的,而在Map中我们通过对象来对 ...
- Python自动化之clean方法前端调用clean方法的错误
obj.non_field_errors.0 源代码: NON_FIELD_ERRORS = '__all__' 如果在前端写 obj.errors.__all__.0直接就会报错 所以经过尝试得知, ...
- MySQL(一)索引的创建和删除
索引是存储引擎用于快速找到记录的一种数据结构,这是索引的基本功能. 索引对于良好的性能非常关键.尤其是当表中的数据量越来越大时,索引对性能的影响愈发重要.接下来将讲述如何创建.查看和删除索引. 索引分 ...
- kubernetes pvc pv 坑
这里遇到一个问题,开始建立的pv死活claim为空,查看pv以及pvc的配置发现并没有任何名称上的关联,继续研究,发现纯粹是通过storage大小进行匹配的,之前因为照抄书本,一个是5G,一个是8G所 ...
- openshift 入门 部署 openshift-origin-server-v3.7.0
OpenShift是一个基于容器技术的云平台,这里的容器技术指的就是docker和kubernetes. Openshift 错误解决 错误信息 failed to run Kubelet: fail ...
- 使用Navicat for Oracle工具连接oracle
使用Navicat for Oracle工具连接oracle的 这是一款oracle的客户端的图形化管理和开发工具,对于许多的数据库都有支持.之前用过 Navicat for sqlserver,感觉 ...
- linux-RPM 打包原理 SPEC 编写规范
一.编写spec脚本 由前面的日志了解到,生成rpm除了源码外,最重要的就是懂得编写.spec脚本.rpm建包的原理其实并不复杂,可以理解为按照标准的格式整理一些信息,包括:软件基础信息,以及安装.卸 ...
- 2017-2018-1 20155317 《信息安全系统设计基础》课堂实践——实现mypwd
2017-2018-1 20155317 <信息安全系统设计基础>课堂实践——实现mypwd 1 . 学习使用pwd 很显然pwd命令的意思是打印出该文件当前的绝对路径 2 . 了解pwd ...