我无法从不同类的函数调用javascript

时间:2013-12-08 01:45:35

标签: ios cordova webview modal-dialog

我有一个项目,我尝试从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的子类,但我不确定它是否应该重要......

1 个答案:

答案 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上调用它