将obj-c类传递给javascript;不起作用.我做错了什么
Passing obj-c class to javascript doesn't work. What am I doing wrong?
我正在用javascript编写一些后端代码,并计划为GUI使用本机代码。这在安卓系统中运行得很好,但我在Mac OS X上的Cocoa中遇到了一些问题。我已经学习了苹果的教程,但它就是不起作用。让我在你看过代码后解释一下。
Index.html
<html>
<head>
<script type="text/javascript">
document.addEventListener("DOMContentLoaded", ready, false);
function ready() {
document.write(returnString());
bridge.onBackendReady();
}
function returnString() {
return "Hello World!!!!";
}
</script>
</head>
<body>
</body>
</html>
AppDelegate.m
#import "AppDelegate.h"
#import "BackendBridge.h"
@implementation AppDelegate
@synthesize webview;
@synthesize backend;
-(void)applicationDidFinishLaunching:(NSNotification *)notification
{
backend = [[BackendBridge alloc] init];
NSString *backendPath = [[NSBundle mainBundle] pathForResource:@"Index" ofType:@"html"];
NSURL *backendUrl = [NSURL fileURLWithPath:backendPath];
[[webview mainFrame] loadRequest:[NSURLRequest requestWithURL:backendUrl]];
[[webview windowScriptObject] setValue:backend forKey:@"bridge"];
}
@end
BackendBridge.m
#import "BackendBridge.h"
@implementation BackendBridge
-(void)onBackendReady
{
NSLog(@"Ready");
}
@end
所以,我想在这里做的很简单。从javascript调用BackendBridge类中的onBackendReady函数。根据我从apples WebView api和教程中了解到的,这应该是正确的方法,但它不起作用(NSLog调用不运行)。我知道javascript函数按预期工作,因为在我的ui中我可以看到字符串"Hello World!!!"。。。
WebScriptObject.h
中的注释说:
By default, no properties or functions are exported. A class must implement
+isKeyExcludedFromWebScript: and/or +isSelectorExcludedFromWebScript: to
expose selected properties and methods, respectively, to JavaScript.
也许可以将此添加到BackendBridge
:
+ (BOOL)isSelectorExcludedFromWebScript:(SEL)selector
{
return selector != @selector(onBackendReady);
}
bridge_onBackendReady();
使用下划线而不是。或:
相关文章:
- <text区域>在我的html中包含event.keycode==13之后,wrap就不起作用了
- 不;在课堂上写完后就不起作用了
- 为什么这个代码不起作用?我花了很长时间试图弄清楚这一点
- 如果.htaccess文件中只写了一行代码,那么我所有的css和js都不起作用,如何修复它
- JavaScript排序算法不起作用 - 任何明显的我做错了
- 角度灯箱不起作用.我做错了什么
- 用于导出Excel的.Net MVC 4.5 JqGrid按钮功能不起作用.什么'我的代码错了
- Windows.print不起作用尝试了所有主要浏览器中的所有方法
- 手风琴一样的形式,对我不起作用,谁能看到我在这里做错了什么.
- jquery工具提示不起作用-指定了项和内容
- AJAX和一个全局变量不起作用,我错了吗
- 将obj-c类传递给javascript;不起作用.我做错了什么
- 将构建数组的PHP代码转换为JS,现在的highcharts'不起作用——我做错了什么
- I'我试着只点击4次,然后就不起作用了,尽管我不确定自己做错了什么
- setTimeout延迟不起作用-我做错了什么
- 带偏移的侧边栏不起作用.我错了什么?
- jQuery在html中不起作用,我不知道我做错了什么
- 清除间隔不起作用(尝试了所有其他答案)
- .innerHTML不起作用,或者我用错了
- 悬停上的引导下拉菜单不起作用,我做错了什么