注入JavaScript以在站点上使用?

注入JavaScript以在站点上使用?,javascript,iphone,ios,xcode,uiwebview,Javascript,Iphone,Ios,Xcode,Uiwebview,我对iOS编程的整个web方面是完全陌生的,所以请容忍我:p。我的目标是从一个网站获取一个JavaScript文件,然后注入该脚本,以便我可以使用它登录到另一个网站。我不确定我的做法是否是最好的,因此,如果您注意到这些做法的不好之处,请告诉我!:D 因此,在我的应用程序中,我们从一个视图开始,其中一个用户有两个文本框和一个提交按钮。一个文本框表示用户名,一个文本框表示密码。当用户点击submit时,我想加载页面,将输入的用户名和密码扔到HTML页面的正确位置 - (IBAction)signIn

我对iOS编程的整个web方面是完全陌生的,所以请容忍我:p。我的目标是从一个网站获取一个JavaScript文件,然后注入该脚本,以便我可以使用它登录到另一个网站。我不确定我的做法是否是最好的,因此,如果您注意到这些做法的不好之处,请告诉我!:D

因此,在我的应用程序中,我们从一个视图开始,其中一个用户有两个文本框和一个提交按钮。一个文本框表示用户名,一个文本框表示密码。当用户点击submit时,我想加载页面,将输入的用户名和密码扔到HTML页面的正确位置

- (IBAction)signInTouched:(id)sender {

    if (userName.text.length > 0 && pass.text.length > 0)
    {
        NSString *theSite = @"www.thesite.com";

        NSURL *theURL = [NSURL URLWithString:theSite];
        NSURLRequest *loginRequest = [[NSURLRequest alloc] initWithURL:theURL];

        [webView loadRequest:loginRequest]; // Webview is the web view :P

        NSURL *jsSite = [NSURL URLWithString:@"www.ThePlaceWithTheJS"];

        NSString *jsString = [NSString stringWithContentsOfURL:jsSite encoding:NSUTF8StringEncoding error:nil];


        [webView stringByEvaluatingJavaScriptFromString:jsString];

        NSString *userValue = userName.text;
        NSString *passValue = pass.text;
        NSString *javaFunction = [NSString stringWithFormat:@"login(%@,%@)", userValue, passValue]; // login is the function in the javascript


        [webView stringByEvaluatingJavaScriptFromString:javaFunction];  

    }

    }
然后,这里是JS文件:

<script type='text/javascript'>
function login(username,password){
    var usernameBox = document.getElementById("ctl00_plnMain_txtLogin");
    usernameBox.value = usernameBox.value + username;

    var passwordBox = document.getElementById("ctl00_plnMain_txtPassword");
    passwordBox.value = passwordBox.value + password;

}
</script>
所以,问题是我不知道我是否做得很好,或者如何让它正常工作。每当我测试它时,文本不会加载到网站上的字段中。所以很明显,它在某个地方出了问题。。。但是在哪里呢

        [webView stringByEvaluatingJavaScriptFromString:jsString];
此调用尝试执行您的javascript

但是,现在jsString包含了标记,它不应该在.js文件中使用,标记在HTML中使用 因此,在评估过程中会出现错误

只需删除.js文件中的开始和结束标记,就可以了

此外,如果不是真的需要,这也不是很好的方法,因为通过加载同步脚本延迟了webview的加载时间


你也应该在异步模式下获取你的.js文件,在收到这个文件和你对登录函数的调用后

你的目标听起来很可疑……你为什么这么说:PJ只是一个头脑清醒的酷猫,你不必在这里乞求别人帮你,每个人浏览这里的目的都是为了解决你的问题,因此人们不可避免地会试图帮助你。我对ObjC一无所知,所以我真的帮不了你,但我确信有人会帮你解决这个问题。只是想确定一下,你的.js文件是否真的包含标签?如果是,那么这就是你的问题。它实际上包含脚本标记:P。有什么问题吗?我一点也不懂JavaScript-编辑-我删除了它们,没有任何更改它仍然不调用任何函数D:嗯,可能还有其他一些错误:只是试着提醒调试它。首先,用函数{alert'inside.js file'}替换整个.js脚本;所以你会知道你已经到了加载文件的时候了;我猜这很糟糕吧我没有正确注入JS文件吗?所以你的JS没有被执行。实际上,它可能是某种安全层,阻止您在任何网站上执行.js,并且只允许在本地webview页面上执行。检查文档。