2016-05-16 10 views
1

Objective-Cコードから次のjavascriptコードを呼び出したいとします。私はHow to call JavaScript Function in 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=' + 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); 
    } 
} 

私のコードから直接HTMLページをロードせずに上記のコードを呼び出すことはできますか?スクリプトを読み込むためにHTMLページが必要な場合、Webビューが読み込まれるとすぐにメソッドを呼び出す方法は?また、prepareCall()メソッドでいくつかのパラメータを渡す必要がありますか?どのように私はこれを達成することができる?

+1

あなたが学ぶ必要があるが、次のようにパラメータを渡すことができますそれを行うための基本的なJavaScript。現在はあまりにも広い質問です – Shubhank

答えて

1

あなたは

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

を使用して、あなたのJSを読み込むことができ、その後webViewDidFinishLoadで関数を呼び出すと

NSString *javascriptString = [NSString stringWithFormat:@"yourFunction('%@','%@')",firstVar,secondVar]; 
[_webView stringByEvaluatingJavaScriptFromString:javascriptString]; 

それが役に立てば幸い:)

0

あなたがリンクしている質問は、実際に必要なものです。文字列(iOS Load UIWebView From Stringを参照)からUIWebViewを読み込むことができます。文字通り、上記のコードを文字列に作成することができ、UIWebViewがロードされたときに実行するタグ<script>に配置する限りです。

すなわち(HTMLを実行するには、多分、あまりにも最小限に抑えられ、これはしかし、あなたが本当に機能であなたのグローバルスコープのコードを入れて呼び出したほうが良いでしょう本当にただの擬似コード

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

であるボディのonloadなどハンドラ。

あなたがしたいすべてがウェブページとして結果を表示している場合を除き、あなたが...実行する必要があり、他のものの束は、しかし、があります。

PS

[webView loadHTMLString:foo baseURL:nil]; 
関連する問題