我应该使用WebView吗?

时间:2016-07-28 23:12:38

标签: javascript webview appcelerator

我目前正在使用Appcelerator / Titanium构建Android和iOS移动应用。

该应用程序非常直接 - 我们的API会返回最新故事,故事的JSON响应,并显示在列表中,当用户选择要呈现的故事时。

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

现在我已经转移到Appcelerator,因为我遇到了一些限制,我遇到了Phonegap以及它真的只是一个奇特的WebView。但是,我再也看不到比WebView更好的方式来显示故事内容了。

例如,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中的所有点击。例如,如果用户点击嵌入式推文,那么应用程序会立即成为Twitter的全屏WebView,当它真的应该在外部浏览器中打开时(我想从Phonegap移动的原因)。 Appcelerator确实允许你communicate via JavaScript处理这样的事情,但它不适用于嵌入式推文之类的东西,因为它们在iFrame中。当然有一种方法可以做到这一点,那里有无数其他应用程序已经实现了我想做的事情,我只是觉得我错过了一些明显的东西!

1 个答案:

答案 0 :(得分:0)

我认为您的问题可以使用webview组件解决,但考虑到一些限制:

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