iFrame在Android上更改window.innerHeight/window.innerWidth+;音差

iFrame在Android上更改window.innerHeight/window.innerWidth+;音差,android,cordova,Android,Cordova,我正在使用PhoneGap为Android创建一个应用程序。应用程序中的一个页面包含比其他页面(这是一个单页面应用程序)大的iFrame(带有本地内容) 我遇到的问题是,查看iFrame页面后,window.innerHeight和window.innerWidth JavaScript对象会更改其值以匹配iFrame的宽度/高度,这会导致其余的“页面”显示不正确,因为它们的大小不同 即使从DOM中删除iFrame,这种情况仍然存在 有没有人遇到过这种情况或想到了解决方法?首先,这里肯定有一个b

我正在使用PhoneGap为Android创建一个应用程序。应用程序中的一个页面包含比其他页面(这是一个单页面应用程序)大的iFrame(带有本地内容)

我遇到的问题是,查看iFrame页面后,window.innerHeight和window.innerWidth JavaScript对象会更改其值以匹配iFrame的宽度/高度,这会导致其余的“页面”显示不正确,因为它们的大小不同

即使从DOM中删除iFrame,这种情况仍然存在


有没有人遇到过这种情况或想到了解决方法?

首先,这里肯定有一个bug

我刚才也有同样的问题并解决了,下面是如何解决的。 对于那些比window.innerWidth更宽的,我将所有iFrame&images宽度更改为100%或更小

下面是相应的HaxeJS代码:

    resizeNodeChildrenTag(_contentContainer,"iframe");
    resizeNodeChildrenTag(_contentContainer,"img");


private function resizeNodeChildrenTag(node:HtmlDom, tagName:String):Void
{
    var tagNodes:HtmlCollection<HtmlDom> = node.getElementsByTagName(tagName);
    // for all nodes with the given tag name
    for (i in 0...tagNodes.length)
    {
        if(tagNodes[i].clientWidth > Lib.window.innerWidth)
            tagNodes[i].setAttribute("width", "96%");
            tagNodes[i].setAttribute("height", "");
        }
    }
}
resizeNodeChildrenTag(_contentContainer,“iframe”);
resizeNodeChildrenTag(“img”);
私有函数resizeNodeChildrenTag(节点:HtmlDom,标记名:String):Void
{
var tagNodes:HtmlCollection=node.getElementsByTagName(标记名);
//对于具有给定标记名的所有节点
用于(0…tagNodes.length中的i)
{
if(标记节点[i].clientWidth>Lib.window.innerWidth)
tagNodes[i].setAttribute(“宽度”,“96%”);
tagNodes[i].setAttribute(“高度”,“高度”);
}
}
}

我也遇到了同样的情况,而且我删除了iframe,解决方案(对我有效)是将下一个放在html头部:



我一直认为这部分是不必要的,因为innerWidth和innerHeight在桌面上并不复杂,但它花费了我6个小时

我想知道它是否对你有用,再见