2009-10-30 49 views
1

我有一個應用程序使用OAuth進行身份驗證,這意味着用戶必須定向到網站以授權應用程序。我更願意讓用戶明白,他們正在使用標準瀏覽器在原始網站進行授權,而不僅僅是使用網絡視圖來顯示我的應用內的內容。但是,每當它們被引導到Safari(通過openURL)時,它就會啓動一個新的Safari窗口,一旦Safari打開了8個窗口,它根本就無法工作。可能打開iPhone Safari並鎖定特定窗口?

我想知道是否有一個等效於錨定標記在html中的「目標」屬性,這將允許我導致從我的應用程序的所有openURL調用打開在同一個窗口中。

我還可以通過Web應用程序公開其他功能,在Safari中創建本地iphone功能和Web應用程序功能之間的混合應用程序,但是如果每次在應用程序和Safari之間切換時必須啓動一個新窗口,它變得不可行。 Youtube應用顯然能夠在顯示視頻後將用戶返回到上一頁,但這可能是Safari for iphone中的自定義插件。而且,返回到前一頁有些用處,將它們發送到現有窗口中的新URL確實打開了很多可能性。

回答

3

我很確定沒有辦法將目標參數傳遞給openURL:

我對Safari的注意事項是,如果您在openURL:打開的頁面已在Safari中打開,它將不會打開另一個選項卡。它只是重新加載該頁面。這可能聽起來微不足道,並且沒有幫助,但是如果可以讓Web應用程序只使用一個頁面,也許可以使用它。不同的意見或狀態可以用#anchor標籤表示。

一個例子是http://m.flickr.com。注意他們的URL結構?它變爲http://m.flickr.com/#/homehttp://m.flickr.com/#/explore/interesting/,http://m.flickr.com/#/search等。所有這些都是不同的網頁給用戶,但對於Safari來說,它們都是相同的頁面。

+0

這實際上非常有幫助。我確信我可以做一些有用的事情。謝謝 – ideasculptor 2009-10-31 05:11:14

+0

嗯。剛剛測試過,它實際上並沒有工作。即使URL是100%相同的,iphone上的Safari仍然會爲每次openURL調用啓動一個新窗口,更不用說,如果它根據錨標記而變化。 – ideasculptor 2009-11-04 23:11:35

0

我發現iOS 6.0.1 Safari會用簡單的哈希標籤打開相同的標籤,沒有斜槓。因此,通過上面的示例http://m.flickr.com,openURL到http://m.flickr.com#someinfo將打開到相同的選項卡。

在您的網頁中,使用window.location.hash返回參數。在上面的例子中,它將返回#someinfo。