Appcelerator Titanium(Android)webview的额外空间

时间:2013-03-06 06:53:46

标签: android titanium

我比较新的钛。我在webview中加载我的本地html / xml。在iOS中,一切都是自动处理的(显示内容),但是当我在webview中检查这个内容时,webview中有额外的空格,内容也显示为跳跃和反弹,这是绝对不可接受的。我正在使用合金结构。 当我在我的本地文件中静态添加元标记(视口)时,空格就消失了。但是我需要动态加载本地文件,所以我无法编辑本地文件。 所以编辑这些文件我覆盖了webview的加载方法,如下所示: -

$.webview.addEventListener('load', function(e) { $.webview.evalJS("var m=document.createElement(\"meta\");m.name = \"viewport\";m.content = \"width=" + scrwidth + ", user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1\";document.getElementsByTagName(\"head\")[0].appendChild(m);"); });

但它不会影响webview的html。为了确认这一点,我在evalJS之后写了一个文件,所以我可以确定evalJS正在影响。

var jsString = 'var s=document.createElement("script");' + 's.innerHTML="' + 'sdfsdfsdfsd' + '";' + 'document.getElementsByTagName("head")[0].appendChild(s);'; $.webview.evalJS(jsString);

var resFile = Ti.Filesystem.getFile(Ti.Filesystem.applicationDataDirectory, "response.html"); resFile.write($.webview.html);

现在,当我在应用程序数据目录中检查此文件时,我可以看到iOS的这种效果(它只显示我本地html的内容)但是对于android我无法看到我添加的脚本。当我检查响应文件时,它从javascrit开始,我不知道它来自何处(我认为它来自原生webview的html)并且在其脚本结束后我看到我的html但不是我在加载时手动添加的脚本。 我读到了这个问题但是所有人都给出了viewport元标记解决方案,但在我的情况下,无论我尝试了多少,我都无法适应内容。 那么你们能告诉我哪里出错了吗?是否有任何特殊权限可以在android中编辑webview的html(因为它没有编辑)。

应用程序类型: - 移动Titanium SDK: - 3.0.2平台&版本: - Android 2.2设备: - htc Nexus / mototrola zoom主机操作系统: - Mac OS 10.8.2 Titanium Studio: - 3.0

感谢。

2 个答案:

答案 0 :(得分:3)

您需要移动设备的视口元标记:

<meta name="viewport" content="width=device-width,user-scalable=yes,initial-scale=1">

答案 1 :(得分:0)

感谢您的回答,但正如我已经说过,无论我在哪里找到这个问题的答案,我都找到了与您提到的答案相同的答案(所以肯定你的答案是正确的)但我上面提到我不能手动添加这一行,因为我无法控制这些文件,所以这对我来说不再适用。

我还展示了我如何在上面动态添加元标记,但这也无效。

所以我现在所做的是处理保存html的文件,然后替换</head> 使用<meta name="viewport" content="width=device-width,user-scalable=yes,initial-scale=1"></head>标记,然后将此文件保存到自己的位置。现在,当文件成功写入时,我将使用webview.url = file.nativepath访问它。 :)现在一切正常。

对于像我这样尝试相同的人来说,这可能是有用的。这里的过程会很慢,因为我正在访问文件编辑文件,然后再次访问此文件但这至少有效。如果有人有更准确或明智的答案,他们可以在此回答谢谢。