从Javascript在iPhone上加载自定义URL方案?

时间:2011-04-22 16:50:16

标签: javascript iphone objective-c url-scheme

我有一个使用stringByEvaluatingJavaScriptFromString修改我无法访问的HTML的应用程序(如Greasemonkey)。具体来说,当我从JS发出NSUserDefaults事件时,我想在onSubmit中存储登录表单中的用户名和密码。

我已经有了自定义网址方案和onSubmit处理程序。我可以传递URL用户名和密码,它会存储它。我只遇到onSubmit处理程序的问题:如何在提交表单之前使用自定义网址保存数据?

使用任何Javascript框架,我的代码仅针对Mobile Safari。

1 个答案:

答案 0 :(得分:1)

抱歉没有直接回答你的问题,但我认为你可能想要考虑一个更简单的选择。您应该能够在不向UIWebView注入任何javascript的情况下嗅探表单提交。只需在UIWebViewDelegate

中实现类似的功能
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    if ([[[request URL] absoluteString] hasPrefix:@"https://www.thirdpartysite.com/theirLoginScript"]) {
        NSString *username = [self parseUsernameFromRequest:request];
        NSString *password = [self parsePasswordFromRequest:request];
        [self saveUsername:username andPassword:password];
    }
    return YES;
}

我已经将parseUsernameFromRequest:parsePasswordFromRequest:saveUsername:andPassword:的实现留给了您的想象力。

(提示:如果表单使用GET方法,那么您可以使用[[request URL] parameterString]获取其参数。如果表单使用POST方法,则可以使用[[NSString alloc] initWithData:[request HTTPBody] encoding:NSUTF8StringEncoding]。)

顺便说一句,您绝不应该在NSUserDefaults中存储密码等敏感信息。 Apple提供钥匙串服务以安全地存储此类信息。不幸的是,使用Keychain服务非常复杂,因此您可能需要查看Buzz Andersen的Simple iPhone Keychain Code