我正在将一个file:// url加载到webview中。由于我的webview需要扩展/折叠,我不是在使用WRAP_CONTENT,而是在android中的javascript onPageFinished事件中计算高度。但每2次出5次,javascript报告错误的高度。对于某些手机,它会返回更大的高度,而对于较旧的低分辨率手机,它会返回比容器更小的高度。
我试过使用window.onload。为了保持前面的理智,我必须在1500ms之后执行setTimeout()以重新计算高度并调整webview容器的大小。
我缺少什么?怎么去修理它?
答案 0 :(得分:0)
尝试依赖Android WebView,而不是依赖于HTML窗口
Html窗口(在JavaScript运行时执行)是320x240或正确的大小
如果您无法直接访问WebView大小,请暂停相关的JavaScript,直到HTML窗口调整大小
使用HTML窗口加载SDK视频叠加层的示例代码
if (!isAndroid() || isAndroidAndResized()) {
this.translateRelativePosition(params);
loadVideo(params.id, params.url, params);
} else {
var relativePosition = {left: params.left, top: params.top};
var offScreenPosition = {
left: params.left - params.width - 2000,
top: params.top - params.height - 2000
}; // preload video without showing splash overlay at (0, 0)
params.left = offScreenPosition.left;
params.top = offScreenPosition.top;
loadVideo(params.id, params.url, params);
var positionCachedVideo = function () {
if (isAndroidAndResized() || Ad.width === 320 && Ad.height === 240) {
params.left = relativePosition.left;
params.top = relativePosition.top;
this.translateRelativePosition(params); // use container absolute position + video relative position (for device overlay)
playVideo(params.id, params);
} // make sure WebView is not 320x240 unless Ad size is 320x240
}.bind(this);
if (this.getWidth() !== 320 || this.getHeight() !== 240) {
targetHtmlWindow.addEventListener('resize', positionCachedVideo);
} else {
setTimeout(positionCachedVideo, 50);
}
}