在Objective C中处理Javascript onclick函数

在Objective C中处理Javascript onclick函数,javascript,objective-c,swift,uiwebview,webkit,Javascript,Objective C,Swift,Uiwebview,Webkit,我在web视图中有一个按钮。单击按钮时,我想将该项添加到我的本机代码数组中。然后,当再次按下时,我想删除数组中的项目。我的问题是:逻辑中缺少什么?按下按钮时,不会调用userContentController或decidePolicyForNavigationAction JavaScript代码 <script type = "text/javascript"> function someFunction(id) { if(id = true) { document.

我在web视图中有一个按钮。单击按钮时,我想将该项添加到我的本机代码数组中。然后,当再次按下时,我想删除数组中的项目。我的问题是:逻辑中缺少什么?按下按钮时,不会调用userContentController或decidePolicyForNavigationAction

JavaScript代码

<script type = "text/javascript">
 function someFunction(id) {
  if(id = true) {
    document.getELementById("someid").innerText = " some title state 1"
  } else {
     document.getELementById(someid).innerText = " some title state 2"
  }
 }
<script>

函数someFunction(id){
如果(id=true){
document.getELementById(“someid”).innerText=“某些标题状态1”
}否则{
document.getELementById(someid).innerText=“某些标题状态2”
}
}
Html按钮

<button class=someclass id="someid" onclick= "Some.listCallBack()">Add List</button>
添加列表
目标C代码

TableViewCell.h
@interface TableViewCell : UITableViewCell <WKNavigationDelegate, WKScriptMessageHandler>
@property (nonatomic,strong) IBOutlet WKWebView *webView;

TableViewCell.m

- (void)awakeFromNib {
 [[[self.webView configuration] userContentController]addScriptMessageHandler:selfname:@"someid"];
}
​
- (void)userContentController:(nonnull WKUserContentController *)userContentController 
didReceiveScriptMessage:(nonnull WKScriptMessage *)message {
// i will handle event here 

}
TableViewCell.h
@接口TableViewCell:UITableViewCell
@属性(非原子,强)ibwkwebview*webView;
TableViewCell.m
-(无效)从NIB中唤醒{
[[[self.webView配置]userContentController]addScriptMessageHandler:selfname:@“someid”];
}
​
-(void)userContentController:(非空WKUserContentController*)userContentController
didReceiveScriptMessage:(非空WKScriptMessage*)消息{
//我会在这里处理这件事
}

由于问题中似乎忽略了实际的单击处理程序,因此很难说出确切的问题是什么。因此,我可能是在陈述显而易见的事实,但我们开始吧

处理程序(在
-addScriptMessageHandler:name:
中注册的处理程序)作为
webkit.messageHandlers
上的属性公开给JavaScript。从这里开始,进程间通信看起来或多或少像是给另一个窗口发送消息,除了我们使用的是
webkit.messageHandlers.handlerID.postMessage()
而不是
window.postMessage()
。换句话说,

function clickHandler() {
    webkit.messageHandlers.someid.postMessage("The message we’d like to pass to our WKScriptMessageHandler");
}

应该这样做。

什么是
Some.listCallback()
?无论缺少什么(或没有缺少什么),似乎都在那里