2016-07-28 138 views
0

我目前正在使用Appcelerator/Titanium构建Android和iOS移动应用程序。我应该使用WebView吗?

该应用程序足够简单 - 我们的API返回最新故事,故事的JSON响应并显示在列表中,以及用户选择呈现故事的时间。

到目前为止,我一直在为我们的应用程序使用Phonegap,所以它简单地输出HTML中的JSON响应并且一切正常。

由于我在Phonegap遇到的一些限制以及它实际上只是一个花哨的WebView,现在我已经转移到Appcelerator。不过,我再也看不到任何更好的显示故事内容的方式。

例如,API将完整的故事内容作为HTML返回,并且可以包含几乎任何HTML标签<p>,<strong><img src=""/><a href="">links</a><script></script><iframe></iframe>,因为我们倾向于嵌入Facebook,Twitter帖子,链接,视频,图形,iframe和内联javascript和CSS。

但是,对于我来说,再次使用WebViews似乎倒退了一步,但目前它似乎比尝试解析HTML并提取可以呈现为本地组件的元素更实用,其中可能不足(嵌入式推文/脸谱)

我知道appcelerator允许您设置HTML为本机label组件,但这只支持Android,不包括JS或CSS。对于iOS,我已经看过AttributedStrings,但这些支持有限。

我想我只是寻找一些再保证,这是做到这一点的正确方法。我已经阅读了很多,渲染WebView组件会影响性能很多,所以这就是为什么我很犹豫。

我的另一个困惑是,我正在努力捕获WebView中的所有点击。例如,如果用户点击嵌入式推文,那么应用程序立即变成全屏WebView的叽叽喳喳,当它真的应该在外部浏览器中打开(我想从Phonegap移动的原因)。 Appcelerator确实让communicate via JavaScript能够处理这样的事情,但它不适用于嵌入式推文,因为它们位于iFrame中。当然有一种方法可以做到这一点,还有无数其他应用程序已经实现了我想要做的事情,我只是觉得我错过了一些明显的东西!

回答

0

我认为你的问题可以用web视图组件,但考虑到一些限制来解决:

  • 如果你想要捕捉的网页视图内的事件,它不可能是远程(http://docs.appcelerator.com/platform/latest/#!/api/Titanium.UI.WebView)。您可以在应用程序中使用本地模板,并使用API​​服务检索内容,并将webview呈现为本地内容,这样您就可以捕获点击等事件。
  • 嵌入第三方内容(如twitter,facebook)存在一些限制。您必须对嵌入的内容进行一些“黑客”才能正常工作。
+0

谢谢@juanblo,你有关于嵌入第三方内容的这些“黑客”的更多信息?我发现它很奇怪,我怎么也找不到关于它的信息,但是我见过无数的应用程序,它们正在做我想做的事情 – robobobobo