2013-03-06 42 views
0

我對鈦是比較新的。我在webview中加載我的本地html/xml。在iOS中,一切都是自動處理的(顯示內容),但是當我在webview中的android內容中檢查此內容時,還會顯示帶有跳躍和跳動的內容,這是永遠不可接受的。我正在使用合金結構。 當我靜態添加元標記(視口)在我的本地文件,然後空白空間不見了。但我需要動態加載本地文件,所以我不能編輯我的本地文件。 所以編輯這些文件我重寫這樣的WebView的加載方法: -Appcelerator鈦(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(因爲它不編輯)。

應用類型: - 移動鈦SDK: - 3.0.2平臺&版本: - Android 2.2的設備: - HTC的Nexus/mototrola變焦主機操作系統: - 的Mac OS 10.8.2鈦工作室 - 3.0

謝謝。

回答

0

謝謝您的回答,但正如我已經說過,只要我試圖找到這個問題的答案我發現了同樣的答案,正如你所提到(所以肯定你的答案是正確的),但我上面提到,我不能手動添加這一行,因爲我沒有控制這些文件,所以這不會對我工作了。

我還表明,我是如何動態添加上面的元標記,但也沒有工作。

所以,現在我所做的是我把其中的HTML保存,然後用<meta name="viewport" content="width=device-width,user-scalable=yes,initial-scale=1"></head>取代</head> 標記文件句柄,然後將該文件保存到自己的位置。現在,當文件成功寫入,然後使用webview.url = file.nativepath訪問它。 :)現在一切工作正常。

可能這對於像我這樣嘗試相同的人很有用。這裏進程會很慢,因爲我正在訪問文件編輯文件,然後再次訪問這個文件,但這至少是工作。如果有人有更準確或合理的答案,他們可以在這裏回答謝謝。

3

您需要針對移動設備的視meta標籤:

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

+0

非常感謝!我也在尋找解決方案。如果我能給你20個upvotes,我會:-) – 2013-04-04 03:01:02