注意:这将作为错误报告给Google,但修复程序通常会延迟。
基于窗口宽度调用函数的网页适用于IE,Firefox等,但Chrome中“有时”失败。问题(在基于Chromium的浏览器中)仅在目标网页在浏览器启动时自动重新加载时发生。
<script>
var dde = document.documentElement;
if(!document.documentElement) dde = document.body; // fix for IE6 and earlier
myWidth = Math.max(dde.scrollWidth,dde.offsetWidth,dde.clientWidth);
if(myWidth < 960) document.location.href="http://www.gooplusplus.com/mini.php";
</script>
答案 0 :(得分:0)
进一步测试发现,在浏览器启动时,即使窗口实际上已最大化,Chrome也会从非最大化窗口大小获取窗口宽度结果。此外,仅在非活动的浏览器选项卡上发生此错误。
解决方案所需的两个步骤是检测:
(1)是基于Chromium的浏览器? - &GT; navigator.userAgent.indexOf("Chrome/")>0
(2)标签是否处于非活动状态? - &GT; document.webkitVisibilityState == "hidden"
测试网址:http://www.gooplusplus.com/chrome-bug.html
我的部分解决方案:
<script>
var dde = document.documentElement;
var tabVisible = document.webkitVisibilityState;
if(!document.documentElement) dde = document.body; // fix for IE6 and earlier
myWidth = Math.max(dde.scrollWidth,dde.offsetWidth,dde.clientWidth);
if( ( navigator.userAgent.indexOf("Chrome/")<0 || tabVisible!="hidden" ) && myWidth < 960 )
document.location.href="http://www.gooplusplus.com/mini.php";
</script>
这就是基于窗口宽度的URL重定向所需要的全部内容。然而,这绕过了另一个假设的情况,其中(1)浏览器是Chrome,(2)标签是非活动的(隐藏的),但是(3)最大化的大小确实是&lt; 960像素。那么,有更完整的解决方案吗?