webScriptNameForSelector和带下划线的javascript方法
webScriptNameForSelector and javascript method with underscore
我在我的应用程序中使用WebView,我加载的页面有一些现有的javascript函数调用,这些调用曾在windows环境中使用,现在应该在mac应用程序中。我的问题是,当前的javascript(从以下工作的windows应用程序移植而来)函数调用目标C如下:
function callObjectiveC
{
window.external.MY_ObjectiveCFunction();
}
我一直在尝试使用:
+ (NSString *)webScriptNameForSelector:(SEL)sel
{
if (sel == @selector(MyObjectiveCFunction))
{
return @"My_ObjectiveCFunction";
}
}
基于:https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/WebKit/Protocols/WebScripting_Protocol/Reference/Reference.html但无济于事。有办法做到这一点吗?我可以随心所欲地调用目标C方法——我只需要能够将其映射到现有javascript中。
谢谢,c.
想出了一个解决方案:
- (id)invokeUndefinedMethodFromWebScript:(NSString *)name withArguments:(NSArray *)args
{
NSLog(@"invoke undefined method: %@", name);
if([name isEqualToString:@"My_ObjectiveCFunction"])
{
return NSSelectorFromString(@"My_ObjectiveCFuntion");
}
return nil;
}
您不应该使用下划线字符。不幸的是,这基本上是唯一有效的解决方案。
看这里的苹果文档
我认为在这里使用invokeUndefinedMethodFromWebScript:不是一个好主意
缺少冒号。
if(sel==@selector(MyObjectiveCFunction:))
相关文章:
- 从Javascript方法返回全局变量
- 简单的JavaScript方法链接
- 如何为javascript方法放入jquery确认对话框
- jquery插件或javascript方法自动调整文本输入(而非文本区域)(固定宽度)可变高度的大小
- 在类外重写Javascript方法,使用默认行为
- 使用 JavaScript 方法滚动
- 如何从窗体调用外部javascript方法
- 使用c#在Web服务器上运行JavaScript方法
- 如何从角度 js 调用 javascript 方法
- 在Node.js中,我在哪里可以看到JavaScript方法的源代码,例如hasOwnProperty
- 简单的javascript方法问题
- iframe未执行Javascript方法(PHP)
- Javascript 方法看不到对象变量
- 从HTML中的另一个文件访问javascript方法
- 如何测试只在闭包范围中可见的javascript方法
- 将php表转换为angularjs javascript方法
- 使用ScriptManager.RegisterStartupScript从代码隐藏调用javascript方法
- 如何从 MVC4 链接调用 Javascript 方法(错误 JavaScript 运行时错误:对象不支持此操作)
- Java eqivalent method of “splice(a,b,..)“在 JavaScript 方法中
- 在客户端 Javascript 方法之后运行服务器方法