我有一个使用OAuth进行身份验证的应用,这意味着必须将用户定向到网站以授权该应用。我更倾向于向用户表明他们使用标准浏览器在原始网站上进行授权,而不是仅仅使用Web视图来显示我的应用程序中的内容。但是,每次将它们定向到Safari(通过openURL)时,它都会启动一个新的Safari窗口,一旦Safari打开了8个窗口,它根本就无法工作。
我想知道在html中是否存在与锚标记的“target”属性相等,这将允许我从我的应用程序中的所有openURL调用在同一窗口中打开。
我可以通过Web应用程序公开其他功能,在Safari中创建本机iphone功能和Web应用程序功能之间的混合应用程序,但如果每次在应用程序和Safari之间切换时都必须启动新窗口,它变得不可行了。 Youtube应用程序显然能够在显示视频后将用户返回到上一页,但这可能是Safari for iphone中的自定义插件。此外,虽然返回上一页有点有用,但将它们发送到现有窗口中的新URL确实会带来很多可能性。
答案 0 :(得分:3)
我很确定无法将目标参数传递给openURL:
。
我注意到Safari的一个问题是,如果您在openURL:
打开的页面已经在Safari中打开,它将无法打开另一个标签页。它只是重新加载该页面。这可能听起来微不足道,但没有帮助,但如果您可以使您的Web应用程序只使用一个页面,也许您可以使用它。可以使用#anchor
标记表达不同的观点或状态。
一个例子是http://m.flickr.com。注意他们的URL结构?它是http://m.flickr.com/#/home,http://m.flickr.com/#/explore/interesting/,http://m.flickr.com/#/search等等。所有这些都是针对用户的不同网页,但对于Safari来说,它们都是相同的页面。
答案 1 :(得分:0)
我发现iOS 6.0.1 Safari将使用简单的标签打开相同的标签,没有斜杠。因此,使用上面的示例http://m.flickr.com,openURL到http://m.flickr.com#someinfo会打开相同的标签。
在您的网页中,使用window.location.hash返回参数。在上面的例子中,它将返回#someinfo。