去发现生活中的美好,记录生活中的点点滴滴

关于window.open()页面编码问题解决

php admin 38℃

今天碰到一个问题,即用

var w=window.open('about:blank');
w.document.write(data.form);

打开一个新页面,新的页面编码为GBK,而原来的页面为UTF-8,两个页面不同的编码,导致新页面承载的表单数据(data.form为父页面传给新页面的表单标签数据)乱码,POST提交到第三方报参数不对。

var w=window.open('about:blank');
w.document.write(data.form);
w.document.charset="utf-8";

即使用w.document.charset = ‘utf-8’设置编码,新页面也不生效,初步估计是新的页面已经不受父页面JS控制,故设置无效,还是GBK;其实这个坑之前就已经遇到过,只不过当时新建一个页面解决,即用模板引擎从后端到前端HTML页面承载数据,再POST提交到第三方;
最后在stackoverflow 上找到并用这个方案完美解决:

var newpageURL = "data:text/html;charset=utf-8,"+encodeURI(data.form).replace(/#/g,"%23");
var w=window.open(newpageURL);

转载请注明:永盟博客 » 关于window.open()页面编码问题解决

喜欢 (1)