记一次奇怪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 ...
随机推荐
- Loadrunner脚本录制常见问题整理
1.LoadRunner录制脚本时为什么不弹出IE浏览器? 当一台主机上安装多个浏览器时,LoadRunner录制脚本经常遇到不能打开浏览器的情况,可以用下面的方法来解决. 启动浏览器,打开Inter ...
- 关于scrollbar-face-color只支持ie的解决办法!
关于scrollbar-face-color只支持ie的解决方法!!今天突然有人问我滚动条css自定义的方法,我发现用scrollbar-base-color这种方法只有ie支持,查了半天资料总结如下 ...
- transform应用详解
关于css3的transform,做了一个demo,上代码 html: <!DOCTYPE html> <html> <head lang="en"& ...
- Android --#字XO小游戏
Layout <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:andro ...
- 浅析-博客Ping服务
简介:PING服务是博客站点向博客目标网站.搜索引擎等发出的博客内容更新通知服务,然后博客目标网站.搜索引擎就会及时的索引.收录以及传播您的博客内容. PING原理 PING 服务是博客站点向博客目标 ...
- 快排java实现
package sort; public class QuickSort { public static final int cutoff = 3; /** * insertion sort * * ...
- 第1章 JavaScript概述
学习要点:1.什么是JavaScript2.JavaScript特点3.JavaScript历史4.JavaScript核心5.开发工具集 JavaScript诞生于1995年.它当时的目的是为了验证 ...
- Daily Scrum 10.29
今天大家的工作做的还算不错,但是晚些时候遗憾的得知我们的吴文会同学生病住院了,所以她明天的任务暂时保留,再做调整.希望大家在努力学习工作的同时一定要注意身体啊! 下面是今天的Task统计:
- 配置非默认端口的监听Listener
- Spring的quartz定时器同一时刻重复执行二次的问题解决
最近用Spring的quartz定时器的时候,发现到时间后,任务总是重复执行两次,在tomcat或jboss下都如此. 打印出他们的hashcode,发现是不一样的,也就是说,在web容器启动的时候, ...