在Objective C中处理Javascript onclick函数
我在web视图中有一个按钮。单击按钮时,我想将该项添加到我的本机代码数组中。然后,当再次按下时,我想删除数组中的项目。我的问题是:逻辑中缺少什么?按下按钮时,不会调用userContentController或decidePolicyForNavigationAction JavaScript代码在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.
<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()
?无论缺少什么(或没有缺少什么),似乎都在那里