3

我正在开发一个基于 Backbone.js 的 Web 应用程序,对于某些用例,它将被包装在原生 iOS UIWebView 中。在 iOS 应用程序中——当我们想要在 web 视图中更改页面时——我们只需在 web 视图上发起一个新请求,该请求会相应地加载页面。

我唯一的问题是,当为请求的 URL 定义了 Backbone 路由时,我希望 Web 视图使用 Backbone 的路由,pushState而不是启动一个全新的页面加载。但是,当没有任何与请求的 URL 对应的 Backbone 路由时,Web 视图应该将其作为一个全新的页面请求来处理,并使用该 URL “重新加载”页面。

现在,本机应用程序使用UIWebView'sloadRequest:方法并传递一个新的NSURLRequest,其 URL 为例如“http://example.com/search”,作为参数。

现在我唯一的想法是使用UIWebView'sstringByEvaluatingJavaScriptFromString:方法:

  • 让 web 视图调用一些 JS 函数,该函数反过来会检查我的 Backbone 路由是否可以处理该 URL。
  • 如果是,它应该触发路由器回调。
  • 如果不是,它应该使用 URL 发起一个新的页面请求。

有输入吗?有没有解决这个问题的内置方法?

谢谢!

4

1 回答 1

1

你能不能把 pushState 用于 iOS 应用程序?我认为无论如何,用户在应用程序中都看不到该 url,因此丑陋的 url 的缺点不适用。因此,与其将 url 更改为 /items/3,不如将其更改为 #/items/3。

这意味着需要由主干处理的更改只会更改哈希值,而需要新页面的更改会更改位置。

于 2012-11-06T14:04:32.453 回答