Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Objective-C代码调用javascript代码?_Javascript_Ios_Objective C - Fatal编程技术网

如何从Objective-C代码调用javascript代码?

如何从Objective-C代码调用javascript代码?,javascript,ios,objective-c,Javascript,Ios,Objective C,我想从Objective-C代码中调用以下javascript代码。我找到了很多类似的答案,但没有一个符合我的要求。下面是我的代码 var s=document.getElementsByTagName('script')[0]; var sc=document.createElement('script'); sc.type='text/javascript'; sc.async=true; sc.src='https://api.zaakpay.com/zaakpay.js?random='

我想从Objective-C代码中调用以下javascript代码。我找到了很多类似的答案,但没有一个符合我的要求。下面是我的代码

var s=document.getElementsByTagName('script')[0];
var sc=document.createElement('script');
sc.type='text/javascript';
sc.async=true;
sc.src='https://api.zaakpay.com/zaakpay.js?random=' + Math.random();
s.parentNode.insertBefore(sc,s);


function encryptField(cardvalue) {
        var out = "";
        for ( var i = 0; i < cardvalue.length; i++) {
                out += (cardvalue.charAt(i).charCodeAt() + key.charAt(i % key.length)
                                .charCodeAt())
                                + ",";
        }
        return out;
}


function prepareCall(){

   var paymenttype = document.getElementById("paymenttype").value;
   if(paymenttype=='CC' || paymenttype=='DC' || paymenttype=='SC'){
      document.getElementById("cvv").value = encryptField(document.getElementById("cvv").value);
   }
   if(paymenttype=='CC' || paymenttype=='DC' ){
          document.getElementById("ccnumber").value = encryptField(document.getElementById("ccnumber").value);
          document.getElementById("expmonth").value = encryptField(document.getElementById("expmonth").value);
          document.getElementById("expyear").value = encryptField(document.getElementById("expyear").value);
   }
}
var s=document.getElementsByTagName('script')[0];
var sc=document.createElement('script');
sc.type='text/javascript';
sc.async=true;
sc.src=https://api.zaakpay.com/zaakpay.js?random=“+Math.random();
s、 parentNode.insertBefore(sc,s);
函数加密字段(cardvalue){
var out=“”;
对于(变量i=0;i

我可以直接从ios代码调用上述代码而不加载HTML页面吗?如果我需要一个HTML页面来加载脚本,那么如何在加载web视图后立即调用这些方法?我还需要在prepareCall()方法中传递一些参数?我如何才能做到这一点?

您所链接的问题实际上就是您所需要的全部。您可以从字符串加载UIWebView(请参阅),这样您就可以使用上面的代码创建一个字符串,只要将其放入加载UIWebView时将执行的
标记中即可

i、 (HTML可能太小,无法运行,这实际上只是伪代码。)

NSString *foo = @"<html><head><script>"
                // Insert your script here
                "</script></head><body></body></html>";

您可以使用

[_webView loadHTMLString:@"<script src=\"your.js\"></script>" baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] resourcePath]]];

希望有帮助:)

您需要学习基本的javascript才能做到这一点。目前这是一个过于宽泛的问题
[_webView loadHTMLString:@"<script src=\"your.js\"></script>" baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] resourcePath]]];
NSString *javascriptString = [NSString stringWithFormat:@"yourFunction('%@','%@')",firstVar,secondVar];
[_webView stringByEvaluatingJavaScriptFromString:javascriptString];