记一次奇怪IE动态加载js的乱码
1. 问题背景
某个老产品需要支持IE8,前端部分组件采用scrat开发体系进行开发的,当页面中内嵌的iframe的页面再加载组件js的时候,某些情况下会出现组件的js乱码,导致组件的js不能运行。而且,乱码并不会在第一次加载页面时发生,而是第二次第三次…加载页才会发生。
页面结构详细情况如下(页面编码为啥没统一,因为有历史原因…请忽略):
当用node的express服务放置iframe对应的页面时,不会出现问题。
当用tomcat服务器放置iframe对应页面时,不会出现问题。
不管用node的express还是tomcat,在乱码的js路径后面加随机参数(比如+ ‘t=(new Date).getTime()’),也不会出现问题(此实验只是说每次都从服务器请求)。
2. 解决办法
目前做实验的结果分析来看,IE在第一次从服务器加载此js文件并没有造成乱码,当第二次以后从IE的缓存里再动态加载这个组件js文件时就会出现乱码。(此问题复现条件比较苛刻)
在网上搜了一下,有个不是很起眼的网页讲述了这个问题的解决办法,问题现象几乎一致,但是没说为什么。
由于js是scrat的scrat.js动态加载进来的,分析其load方法,修改
if (isScript) {
node.type = 'text/javascript';
node.async = 'async';
node.charset = 'UTF-8';// 为解决这个问题新加的代码
node.src = url;
}
在设置src前指定编码 node.charset = 'UTF-8';
这样就可以解决问题,但上面的实验中的几个对比到底是什么原因造成的结果,没有弄清楚细节。
记一次奇怪IE动态加载js的乱码的更多相关文章
- 动态加载JS函数
一般性的,当我们需要加载js文件的时候都会使用script标签来实现,类似于如下代码: 代码如下: <script type="text/javascript" src=&q ...
- 动态加载js和css
开发过程中经常需要动态加载js和css,今天特意总结了一下常用的方法. 1.动态加载js 方法一:动态加载js文件 // 动态加载js脚本文件 function loadScript(url) { v ...
- 动态加载js文件
由于最近在弄echarts,关于地图类的效果,但是全国地图整体的js文件太大了,加载很耗费资源,所以要根据不同省份加载不同地区的js地图, 于是就想的比较简单, var script = docume ...
- 动态加载js,css
今天项目中需要用到动态加载 CSS 文件,经过一番折腾终于搞定,回家整理了一下,顺便融合了动态加载 JS 的功能写成了一个对象,先上代码: var dynamicLoading = { css: fu ...
- 动态加载JS脚本的4种方法
实现OPOA(One Page One Application)时,必须使用动态加载js. 也就是在用户选择某个菜单项后,再动态加载对应的全部js到客户端. 动态加载js的情况很多啊,比如解决ajax ...
- 动态加载JS文件,并根据JS文件的加载状态来执行自己的回调函数
动态加载JS文件,并根据JS文件的加载状态来执行自己的回调函数, 在很多场景下,我们需要在动态加载JS文件的时候,根据加载的状态来进行后续的操作,需要在JS加载成功后,执行另一方法,这个方法是依托在加 ...
- JS动态加载 js css
1.动态加载js function loadScript( url ){ var script = document.createElement( "script" ); scri ...
- 动态加载JS过程中如何判断JS加载完成
在正常的加载过程中,js文件的加载是同步的,也就是说在js加载的过程中,浏览器会阻塞接下来的内容的解析.这时候,动态加载便显得尤为重要了,由于它是异步加载,因此,它可以在后台自动下载,并不会妨碍其它内 ...
- ExtJS4.x动态加载js文件
动态加载js文件是ext4.x的一个新特性,可以有效的减少浏览器的压力,提高渲染速度.如动态加载自定义组件 1.在js/extjs/ux目录下,建立自定义组件的js文件. 2.编写MyWindow.j ...
随机推荐
- CF 22B. Bargaining Table
水题.好久没有写过优化搜索题了. #include <cstdio> #include <cstring> #include <iostream> #include ...
- NOI模拟赛Day5
T1 有and,xor,or三种操作,每个人手中一个数,求和左边进行某一种运算的最大值,当t==2时,还需要求最大值的个数. test1 20% n<=1000 O(n^2)暴力 test2 2 ...
- ThinkPHP 分页类的使用及退出功能的实现
/* ThinkPHP设置编码统一: 一.数据库设置为utf8_bin 二.HTML页面设置charset=utf-8,而且检查文档编码格式是否是utf-8.phpDesigner8设置方式为“文件- ...
- SolrCloud-如何在.NET程序中使用
https://github.com/vladen/SolrNet 原来我们在我们的项目里用的是根据数据库路由到不同的单机Solr服务器,但是这样的话,每次Solr配置的修改都要修改三台不通的服务器, ...
- How to get SQLite work on windows phone 8
1.Install SQLite for Windows Phone SDKC:\Program Files (x86)\Microsoft SDKs\Windows Phone\v8.0\Exten ...
- 当target属性在XHTML script中无效时
<a href="#" target=_blank></a>target此属性能够使链接在新窗口打开,但是在XHTML script中无效时. 那么解决方案 ...
- jsp统测
. 解析:B/S架构并不是C/S架构的替代品,有些程序例如大型的网络游戏一般使用的是C/S架构 . 解析:web-inf目录中的文件不能被客户端直接访问.所以正确答案为c 解析:jsp的是jsp内置 ...
- 【资源】mp3的外链资源
做开发有时候会遇到需要mp3外链来进行程序的调试,但是自己搭建服务器比较麻烦,而主流的音乐平台都不提供外链音乐.晚上偶得一外链mp3的网站,标记之: http://9hok.com/
- 重写(Override)与重载(Overload)
重写(Override) 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变.即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为. 也就是说子类 ...
- Oracle-表格的建立
表格的建立,在table分列鼠标右键: 在名称写上此表格的名称,最好用英文,中文容易报错.表空间默认为user,也可以自己选择. 数据类型,一个汉字占用3个字节,最好多定义一些字节,防止出错. 可为空 ...