Chrome中子窗口打开为空且控制台报Invalid JSON错误求助
解决Chrome中window.open弹窗为空的问题
嘿,我来帮你梳理下这个问题的可能原因和解决方案~
你提到弹窗在Firefox正常显示,但Chrome里为空,还出现了Uncaught Invalid JSON的错误,结合你的代码,咱们可以从这几个方向排查:
1. 先检查目标页面本身的兼容性
直接在Chrome地址栏打开http://192.168.1.104:1007/print/coupon,看看页面能不能正常加载:
- 如果直接打开也异常,那问题出在目标页面本身——比如页面里有Chrome不兼容的JS代码,或者服务器返回的内容格式有误(比如把HTML页面的
Content-Type标成了application/json,这就会触发控制台的JSON解析错误)。 - 如果直接打开正常,再聚焦到弹窗的触发逻辑上。
2. 确认弹窗是否由用户主动触发
Chrome对非用户主动触发的弹窗有更严格的安全限制,比如你的代码如果是页面加载时自动执行的(不是用户点击按钮/链接触发),Chrome可能会限制弹窗的内容加载。
建议把弹窗代码放在用户点击事件里,比如:
// 假设页面有个id为openPopupBtn的按钮 $('#openPopupBtn').click(function() { var popup = window.open("http://192.168.1.104:1007/print/coupon", "Popup", "width=500,height=500"); // 监听弹窗加载完成后再聚焦,避免提前操作导致异常 popup.onload = function() { popup.focus(); }; });
3. 排查JSON解析错误的来源
控制台的Invalid JSON错误,大概率是某段代码把非JSON格式的内容当成JSON解析了:
- 检查主页面有没有代码会读取弹窗的内容并执行
JSON.parse()操作?如果弹窗返回的是HTML页面,这样解析肯定会报错。 - 检查目标页面的响应头,确保
Content-Type是text/html(如果是HTML页面的话),别错误设置成application/json。
4. 临时禁用Chrome扩展试试
有时候Chrome的广告拦截、隐私类扩展会干扰弹窗的内容加载,可以临时禁用所有扩展再测试,看看是不是扩展导致的问题。
内容的提问来源于stack exchange,提问作者Siva
相关产品推荐
相关产品推荐

