<html> <head> <script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript" src="js/quiz-1.js"></script> <link rel="stylesheet" type="text/css" href="style.css" /> </head> <body> <p class="question">1. What is the answer to this question?</p> <ul class="answers"> <input type="radio" name="q1" value="a" id="q1a"><label for="q1a">Answer 1</label><br/> <input type="radio" name="q1" value="b" id="q1b"><label for="q1b">Answer 2</label><br/> <input type="radio" name="q1" value="c" id="q1c"><label for="q1c">Answer 3</label><br/> <input type="radio" name="q1" value="d" id="q1d"><label for="q1d">Answer 4</label><br/> </ul> <p class="question">2. What is the answer to this question?</p> <ul class="answers"> <input type="radio" name="q2" value="a" id="q2a"><label for="q2a">Answer 1</label><br/> <input type="radio" name="q2" value="b" id="q2b"><label for="q2b">Answer 2</label><br/> <input type="radio" name="q2" value="c" id="q2c"><label for="q2c">Answer 3</label><br/> <input type="radio" name="q2" value="d" id="q2d"><label for="q2d">Answer 4</label><br/> </ul> <p class="question">3. What is the answer to this question?</p> <ul class="answers"> <input type="radio" name="q3" value="a" id="q3a"><label for="q3a">Answer 1</label><br/> <input type="radio" name="q3" value="b" id="q3b"><label for="q3b">Answer 2</label><br/> <input type="radio" name="q3" value="c" id="q3c"><label for="q3c">Answer 3</label><br/> <input type="radio" name="q3" value="d" id="q3d"><label for="q3d">Answer 4</label><br/> </ul> <p class="question">4. What is the answer to this question?</p> <ul class="answers"> <input type="radio" name="q4" value="a" id="q4a"><label for="q4a">Answer 1</label><br/> <input type="radio" name="q4" value="b" id="q4b"><label for="q4b">Answer 2</label><br/> <input type="radio" name="q4" value="c" id="q4c"><label for="q4c">Answer 3</label><br/> <input type="radio" name="q4" value="d" id="q4d"><label for="q4d">Answer 4</label><br/> </ul> <p class="question">5. What is the answer to this question?</p> <ul class="answers"> <input type="radio" name="q5" value="a" id="q5a"><label for="q5a">Answer 1</label><br/> <input type="radio" name="q5" value="b" id="q5b"><label for="q5b">Answer 2</label><br/> <input type="radio" name="q5" value="c" id="q5c"><label for="q5c">Answer 3</label><br/> <input type="radio" name="q5" value="d" id="q5d"><label for="q5d">Answer 4</label><br/> </ul> <p class="question">6. What is the answer to this question?</p> <ul class="answers"> <input type="radio" name="q6" value="a" id="q6a"><label for="q6a">Answer 1</label><br/> <input type="radio" name="q6" value="b" id="q6b"><label for="q6b">Answer 2</label><br/> <input type="radio" name="q6" value="c" id="q6c"><label for="q6c">Answer 3</label><br/> <input type="radio" name="q6" value="d" id="q6d"><label for="q6d">Answer 4</label><br/> </ul> <p class="question">7. What is the answer to this question?</p> <ul class="answers"> <input type="radio" name="q7" value="a" id="q7a"><label for="q7a">Answer 1</label><br/> <input type="radio" name="q7" value="b" id="q7b"><label for="q7b">Answer 2</label><br/> <input type="radio" name="q7" value="c" id="q7c"><label for="q7c">Answer 3</label><br/> <input type="radio" name="q7" value="d" id="q7d"><label for="q7d">Answer 4</label><br/> </ul> <p class="question">8. What is the answer to this question?</p> <ul class="answers"> <input type="radio" name="q8" value="a" id="q8a"><label for="q8a">Answer 1</label><br/> <input type="radio" name="q8" value="b" id="q8b"><label for="q8b">Answer 2</label><br/> <input type="radio" name="q8" value="c" id="q8c"><label for="q8c">Answer 3</label><br/> <input type="radio" name="q8" value="d" id="q8d"><label for="q8d">Answer 4</label><br/> </ul> <p class="question">9. What is the answer to this question?</p> <ul class="answers"> <input type="radio" name="q9" value="a" id="q9a"><label for="q9a">Answer 1</label><br/> <input type="radio" name="q9" value="b" id="q9b"><label for="q9b">Answer 2</label><br/> <input type="radio" name="q9" value="c" id="q9c"><label for="q9c">Answer 3</label><br/> <input type="radio" name="q9" value="d" id="q9d"><label for="q9d">Answer 4</label><br/> </ul> <p class="question">10. What is the answer to this question?</p> <ul class="answers"> <input type="radio" name="q10" value="a" id="q10a"><label for="q10a">Answer 1</label><br/> <input type="radio" name="q10" value="b" id="q10b"><label for="q10b">Answer 2</label><br/> <input type="radio" name="q10" value="c" id="q10c"><label for="q10c">Answer 3</label><br/> <input type="radio" name="q10" value="d" id="q10d"><label for="q10d">Answer 4</label><br/> </ul> <br/> <div id="results"> Show me the answers! </div> <div id="category1"> <p> <strong>Question 1:</strong> The correct answer is the <strong>Answer 1</strong>.</p> </div> <div id="category2"> <p> <strong>Question 2:</strong> The correct answer is <strong>Answer 2</strong>.</p> </div> <div id="category3"> <p> <strong>Question 3:</strong> The correct answer is <strong>Answer 3</strong>.</p> </div> <div id="category4"> <p> <strong>Question 4:</strong> The correct answer is <strong>Answer 4</strong>.</p> </div> <div id="category5"> <p> <strong>Question 5:</strong> The correct answer is <strong>Answer 1</strong>.</p> </div> <div id="category6"> <p> <strong>Question 6:</strong> The correct answer is <strong>Answer 2</strong>.</p> </div> <div id="category7"> <p> <strong>Question 7:</strong> The correct answer is <strong>Answer 3</strong>.</p> </div> <div id="category8"> <p> <strong>Question 8:</strong> The correct answer is <strong>Answer 4</strong>.</p> </div> <div id="category9"> <p> <strong>Question 9:</strong> The correct answer is <strong>Answer 1</strong>.</p> </div> <div id="category10"> <p> <strong>Question 10:</strong> The correct answer is <strong>Answer 2</strong>.</p> </div> <div id="category11"> <p> You answered them all right!</p> </div> </body> </html>
我的iOS编码面临一个大问题.我的要求是我有一个HTML文件.该文件包含一些多项选择Q& A.我在UIWebView中加载该html文件.当我单击该答案按钮时,我必须检索在webView上单击了哪个按钮.
这怎么可能?
它不是一个重复的Q,我已经在谷歌上搜索过,无论我得到什么,它都不能满足我的要求.
我的代码如下:
- (void)viewDidLoad { [super viewDidLoad]; Nsstring *path; NSBundle *thisBundle = [NSBundle mainBundle]; path = [thisBundle pathForResource:@"Untitled" ofType:@"html"]; NSURL *instructionsURL = [NSURL fileURLWithPath:path]; [_webview loadRequest:[NSURLRequest requestWithURL:instructionsURL]]; } - (void)webViewDidFinishLoad:(UIWebView*)theWebView { Nsstring* returnValue =[theWebView stringByEvaluatingJavaScriptFromString:@"myFunction()"]; NSLog(@"returnValue = %@ ",returnValue); } - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { NSLog(@" didFailLoadWithError"); }
但我的输出是:Sample_JS [2218:44719] returnValue =
请帮帮我….
解决方法
在您的代码中,这是事情发生的顺序:
>您在viewDidload中加载请求
>您的webview已完成加载.因此您可以选择该值.但此时此刻.您还没有选择任何内容.
>当您选择一个项目时,您没有做任何事情告诉iOS您选择了一个项目
所以,我建议使用WKWebview,使用JS Code很好.
function submit () { var message = //here get all your selected items window.webkit.messageHandlers.observe.postMessage(message); }
>在ViewController中,创建WKUserContentController以处理通知
WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc]init]; WKUserContentController *controller = [[WKUserContentController alloc] init]; [controller addScriptMessageHandler:self name:@"observe"]; configuration.userContentController = controller; _webView = [[WKWebView alloc] initWithFrame:self.view.frame configuration:configuration];
>在委托方法中,处理js事件
-(void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message { //message.body }
更新整个项目
#import <WebKit/WebKit.h> @interface ViewController ()<WKScriptMessageHandler> @property (strong,nonatomic) WKWebView * webview; @end @implementation ViewController - (void)viewDidLoad { Nsstring *path; NSBundle *thisBundle = [NSBundle mainBundle]; path = [thisBundle pathForResource:@"Untitled" ofType:@"html"]; NSURL *instructionsURL = [NSURL fileURLWithPath:path]; WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc]init]; WKUserContentController *controller = [[WKUserContentController alloc] init]; [controller addScriptMessageHandler:self name:@"observe"]; configuration.userContentController = controller; _webview = [[WKWebView alloc] initWithFrame:self.view.frame configuration:configuration]; [_webview loadRequest:[NSURLRequest requestWithURL:instructionsURL]]; [self.view addSubview:self.webview]; } -(void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message{ NSLog(@"%@",message.body); }
和htmlfile
<html> <head> <script type="text/javascript"> function getFirstSelect(){ var rates = document.getElementsByName('q1'); var rate_value; for(var i = 0; i < rates.length; i++){ if(rates[i].checked){ rate_value = rates[i].value; break; } } window.webkit.messageHandlers.observe.postMessage(rate_value); } </script> <link rel="stylesheet" type="text/css" href="style.css" /> </head> <body> <p class="question">1. What is the answer to this question?</p> <ul class="answers"> <input type="radio" name="q1" value="a" id="q1a"><label for="q1a">Answer 1</label><br/> <input type="radio" name="q1" value="b" id="q1b"><label for="q1b">Answer 2</label><br/> <input type="radio" name="q1" value="c" id="q1c"><label for="q1c">Answer 3</label><br/> <input type="radio" name="q1" value="d" id="q1d"><label for="q1d">Answer 4</label><br/> </ul> <div id="Submit"> <button onclick="getFirstSelect()">Submit</button> </div> </body> </html>
点击提交时
这是测试项目,我相信你可以自己找出休息
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。