0

我对钛比较陌生。我在 webview 中加载我的本地 html/xml。在 iOS 中,所有内容都是自动处理的(显示内容),但是当我在 webview 中的 android 内容中检查此内容时,会有额外的空格,内容也会显示为跳跃和弹跳,这是不可接受的。我正在使用合金结构。当我在本地文件中静态添加元标记(视口)时,空白就消失了。但是我需要动态加载本地文件,所以我不能编辑我的本地文件。因此,编辑这些文件我会像这样覆盖 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,但没有看到我在加载中手动添加的脚本。我读到了这个问题,但都给出了视口元标记解决方案,但就我而言,无论我多么努力,我都无法适应内容。那么你们能告诉我我哪里出错了吗?是否有任何特殊权限可以在 android 中编辑 webview 的 html(因为它没有编辑)。

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

谢谢。

4

2 回答 2

3

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

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

于 2013-04-03T21:09:24.177 回答
0

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

我还展示了我如何在上面动态添加元标记,但这也不起作用。

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

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

于 2013-04-08T16:09:57.743 回答