我有一个项目,我尝试从Objective-C类调用一些JavaScript。如果所有内容都在一个类中(我可以调用脚本),它就可以工作。
然而,当我在混合中引入另一个类时,我似乎无法调用第一个类的WebView的JavaScript。我以为我没有正确地调用类,但是我使用了invokeJS方法只是调出了一个Objective-C AlertView并且它工作正常。所以我知道它正在调用方法,但如果我从第二个类调用该方法,JavaScript似乎不起作用。
[t invokeJS];
在我的其他班级
-(void)invokeJS
{
[self.webView stringByEvaluatingJavaScriptFromString:@"dan()"];
}
我不允许在另一个班级的观点上调用某个动作吗?
我应该注意这是一个phonegap应用程序,所以这就是设置相当尴尬的原因。
我有一个模态控制器,当我关闭控制器时,我想调用JavaScript。
我尝试从我的modalViewController类直接访问webview,但这似乎无法正常工作
[t.webView stringByEvaluatingJavaScriptFromString:@"dan()"];
非常感谢任何帮助,谢谢。
STARImageController *modalView = [[STARImageController alloc] initWithNibName:@"STARImageController" bundle:nil];
modalView.myImage = fileContents;
[self.viewController presentModalViewController:modalView animated:YES];
上面的代码来自我的toast类(t),它提供了模态视图控制器。值得注意的是,我的Toast类不是一个视图,而是一个CordovaPlugin的子类,但我不确定它是否应该重要......
答案 0 :(得分:1)
如果您想从模态视图控制器执行[self.webView stringByEvaluatingJavaScriptFromString:@"dan()"];
,请尝试以下操作:
STARImageController *modalView = [[STARImageController alloc]
initWithNibName:@"STARImageController" bundle:nil];
modalView.webView = self.webView; // <-- this line
modalView.myImage = fileContents;
[self.viewController presentModalViewController:modalView animated:YES];
这里的假设是,您想要运行JavaScript的webView
在它所在的ViewController上被称为self.webView
,并且您呈现的modalView具有UIWebView
名为webView
的属性。
现在,modalView.webView
是对原始网页视图的引用,因此从[self.webView stringByEvaluatingJavaScriptFromString:@"dan()"];
调用modalView
实际上是在原始视图中的webView
上调用它