2012-10-17 64 views
3

我正在開發一個基於Backbone.js的Web應用程序,用於某些用例將被包裝在本機iOS UIWebView中。在iOS應用程序中 - 當我們想要在網頁視圖中更改頁面時 - 我們只需在網頁視圖上啓動一個新請求,從而相應地加載頁面。在UIWebView中使用Backbone.js路由器和pushState

我唯一的問題是,當爲請求的URL定義了Backbone路由時,我希望Web視圖使用Backbone的路由和pushState,而不是啓動整個新的頁面加載。但是,當沒有任何與請求的URL對應的Backbone路由時,Web視圖應該將其作爲整個新頁面請求處理,並用該URL「重新加載」頁面。

現在本地應用程序使用UIWebViewloadRequest:方法並通過一個新的NSURLRequest,其URL爲例如。 「http://example.com/search」作爲參數。

現在我唯一的想法就是用UIWebViewstringByEvaluatingJavaScriptFromString:方法:

  • 已在網頁視圖中調用JS的一些功能,這反過來會檢查我的骨幹路由就可以搞定URL。
  • 如果是,它應該觸發路由器回調。
  • 如果不是,它應該用URL發起一個新的頁面請求。

任何輸入?有沒有解決這個問題的方法?

謝謝!

回答

1

您是否可以轉而使用iOS應用程序的pushState?我認爲該應用程序中的用戶無法看到該url,因此不適用於較爲醜陋的url。因此,不要將url更改爲/ items/3,您可以將其更改爲#/ items/3。

這意味着需要由主幹處理的更改只會改變哈希值,而需要新頁面的更改會改變位置。