ios - 将值从 Objective-C 传递到 JS 文件

标签 ios objective-c uiwebview

寻找将 NSArray 传递给 JS 文件的方法。

正如我之前所做的那样,将整个 JS 制作为 NSString。如下所示:

NSString *html = [NSString stringWithFormat:@"<div id='check'></div><script> var j, currentOption='', jsArray = new Array %@, selectedArray1 = new Array %@, str=''; for(j = 0; j< %lu;  j++){ checked=''; for(k=0; k<selectedArray1.length; k++){ if(\"'\"+j+\"'\"==selectedArray1[k]){checked='checked';currentOption
+= j+',';} } str += '<label><input type=\"checkbox\" id=\"one_'+j+'\" '+checked+' name = \"Dee[]\" value = \"'+jsArray[j]+'\" style=\"width:20px;height:60px;vertical-align: middle;position: relative;bottom: 1px;\"  onclick=\"showvalue(this.value);\" />'+jsArray[j]+'</label><br/><br/>'; } document.getElementById(\"check\").innerHTML=str; function showvalue(){currentOption='';for(j = 0; j< %lu;  j++){ if(document.getElementById('one_'+j).checked){currentOption += j+'^';} }} </script>",newArray,oldArray,(unsigned long)newArray.count,(unsigned long)newArray.count];

然后使用以下方法在 webview 中加载此字符串:

 [self.webView loadHTMLString:[NSString stringWithFormat:@"%@ \n\r <br/><br/> %@",[self.Array objectAtIndex:self.postion][@"question"],html] baseURL:nil];

现在我有了单独的 JS 文件,我正在加载 JS 文件:

NSString *filePathForJS = [[NSBundle mainBundle] pathForResource:@"JSFile" ofType:@"js"];
NSURL* jsFile  = [NSURL fileURLWithPath:filePathForJS];
[self.webView loadHTMLString:[NSString stringWithFormat:@"<div id='check'></div><br/><br/><script src=\"%@\" type='text/javascript'></script><script>document.getElementById(\"check\").innerHTML='%@';</script>",jsFile,[self.questionArray objectAtIndex:self.postion][@"question"]] baseURL:nil];

我想将数组传递给文件中声明的 JS 数组。我怎样才能做到这一点?

最佳答案

从 Objective-C 代码加载数组作为字符串

NSString *filePathForCross = [[NSBundle mainBundle] pathForResource:@"Q-11" ofType:@"js"];
NSURL* jsFile  = [NSURL fileURLWithPath:filePathForCross];
NSString* content = [NSString stringWithContentsOfFile:filePathForCross
                                              encoding:NSUTF8StringEncoding
                                                 error:NULL];
NSString *tmpstring=[NSString stringWithFormat:@"%@",[self.questionArray objectAtIndex:self.indexCount]
NSString *ttmpstring=[NSString stringWithFormat:@"<div id='check'></div><script> var optionArray = %@; %@ %@</script>",tmpstring,content,jsFunTohighlightDiv];

NSLog(@"Here options array: %@",ttmpstring);
[self.webView loadHTMLString:[NSString stringWithFormat:@"%@ \n\r <br/><br/> %@",[self.questionArray objectAtIndex:self.indexCount][QuestionLang],ttmpstring] baseURL:nil];

关于ios - 将值从 Objective-C 传递到 JS 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39720821/

相关文章:

ios - popViewController 的完成 block

objective-c - 为什么 mouseDragged 位置落后于实际鼠标?

ios - 在没有模拟器的情况下在xcode 7中编译 objective-c

ios - WebView 不加载 iOS 9 中的非标准端口

ios - 应用商店提交 : Priority Update?

ios - 在 iOS 中使用 NSURLSession 后台上传太慢

ios - 应用程序的 Info.plist 必须包含 NSMotionUsageDescription 键

ios - 带有文本和图像的可编辑 UITextView?

javascript - 如何使用 LoadHTMLString 方法在 WebView 中加载大型 HTML 字符串?

ios - UIPageViewController -presentationCount 未触发