gpt4 book ai didi

javascript - 如何在 iOS 中调用 Javascript 方法?

转载 作者:太空狗 更新时间:2023-10-29 15:55:15 25 4
gpt4 key购买 nike

<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 文件。该文件包含一些多项选择问答。我将该 html 文件加载到 UIWebView 中。当我单击该回答按钮时,我必须检索在 webView 上单击了哪个按钮。

我必须从 html 文件中检索该方法。

这怎么可能?

它不是重复的 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");
}

enter image description here

但我的输出是:Sample_JS[2218:44719] returnValue =

请帮帮我....

最佳答案

在您的代码中,这是事情发生的顺序:

  1. 您在 viewDidload 中加载请求
  2. 您的 webview 已完成加载。因此您获得了所选的值。但是此时。您还没有选择任何内容。
  3. 当你选择一个项目时,你没有做任何事情来告诉 iOS 你选择了一个

所以,我建议使用WKWebview,使用 JS Code 比较好。

  1. 在您的 js 代码中,添加一个提交按钮。然后在按钮 Action 函数中

    function submit () {
    var message = //here get all your selected items
    window.webkit.messageHandlers.observe.postMessage(message);
    }
  2. 在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];
  3. 委托(delegate)方法中,处理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);
}

和html文件

<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>

点击提交时 enter image description here

这是测试项目,相信你自己能搞定

关于javascript - 如何在 iOS 中调用 Javascript 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30588658/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com