【问题标题】:Using Backbone.js router and pushState in UIWebView在 UIWebView 中使用 Backbone.js 路由器和 pushState
【发布时间】:2012-10-07 12:16:01
【问题描述】:

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

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

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

现在我唯一的想法是使用UIWebViewstringByEvaluatingJavaScriptFromString:方法:

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

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

谢谢!

【问题讨论】:

    标签: ios backbone.js uiwebview pushstate


    【解决方案1】:

    您能否将 pushState 用于 iOS 应用?我假设该 url 在应用程序中对用户来说是不可见的,因此丑陋的 url 的缺点不适用。因此,与其将 url 更改为 /items/3,不如将其更改为 #/items/3。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多