如何从Objective-C代码中调用javascript代码
How to call javascript code from Objective - C code?
我想从Objective-C代码中调用以下javascript代码。我已经找到了很多答案,比如如何在ObjectiveC中调用JavaScriptFunction,但都不符合我的要求。以下是我的代码
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页面的情况下直接从我的ios代码中调用上述代码吗?如果我需要一个HTML页面来加载脚本,那么如何在加载web视图后立即调用这些方法?我还需要在prepareCall()方法中传递一些参数吗?我怎样才能做到这一点?
您可以使用加载js
[_webView loadHTMLString:@"<script src='"your.js'"></script>" baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] resourcePath]]];
然后在webViewDidFinishLoad
中,您可以调用函数并按如下传递参数
NSString *javascriptString = [NSString stringWithFormat:@"yourFunction('%@','%@')",firstVar,secondVar];
[_webView stringByEvaluatingJavaScriptFromString:javascriptString];
希望它有帮助:)
您链接的问题实际上几乎就是您所需要的全部。你可以从字符串中加载UIWebView(请参阅iOS从字符串加载UIWebView),这样你就可以用上面的代码创建一个字符串,只要你把它放在<script>
标记中,它就会在加载UIWeb视图时执行。
即(HTML可能太小而无法运行,这实际上只是伪代码
NSString *foo = @"<html><head><script>"
// Insert your script here
"</script></head><body></body></html>";
然而,您最好将全局范围的代码放在函数中,并将其作为主体的onload处理程序进行调用。
然而,你可能还需要做一些其他的事情。。。除非您只想将结果显示为网页。
p.S.
[webView loadHTMLString:foo baseURL:nil];
相关文章:
- 云代码(javascript)失败,原因是:{代码:1,消息:内部错误
- 简化此If语句,使其不会't重复代码-Javascript
- 十进制到二进制代码Javascript
- 第二次单击时执行不同的代码(JavaScript)
- 在不使用jquery($symbol)knockout.js的情况下分离代码javascript
- 缩短几个元素的onclick代码 - JavaScript
- 英国银行排序代码 JavaScript 正则表达式
- 我无法在谷歌图表的代码 javascript 中获取 json 数据(项目 Python Hello Dashboard
- 和代码 JavaScript 没有被 &.
- 我怎样才能减少这段代码 javascript 代码,这样它就不会那么重复了
- 我想单击一个按钮,一次只执行已经制作的程序中的一行代码.(JavaScript)
- 滑动 DIV 代码 Javascript 的小问题
- 尝试重写代码 JavaScript
- 是否可以检测到在不使用键代码 javascript 的情况下按下了输入键
- 输入网址代码 JavaScript 播放器
- 管理通用客户端代码(javascript/css)
- 理解代码javascript
- 加载json-url参数代码(javascript修改)
- 变量检查错误的代码(javascript)
- css属性仅由代码javascript应用