関数を使用してhtmlページでjavascriptを呼び出そうとしています-
_View did load function
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *writablePath = [documentsDirectory stringByAppendingPathComponent:@"BasicGraph.html"];
NSURL *urlStr = [NSURL fileURLWithPath:writablePath];
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *myPathInfo = [[NSBundle mainBundle] pathForResource:@"BasicGraph" ofType:@"html"];
[fileManager copyItemAtPath:myPathInfo toPath:writablePath error:NULL];
[graphView loadRequest:[NSURLRequest requestWithURL:urlStr]];
}
- (void) webViewDidFinishLoad:(UIWebView *)webView
{
[graphView stringByEvaluatingJavaScriptFromString:@"methodName()"];
}
_
これがhtmlページのjavascriptです-
_<script>
function methodName()
{
// code to draw graph
}
_
ただし、関数methodName()
は呼び出されませんが、window.onload = function()の後はすべて正常に機能しています。
RGraphs をアプリケーションに統合しようとしています。_Basic.html
_は、javascriptが記述されているhtmlページです。
誰かがこれで私を助けることができたら素晴らしいでしょう。
シンプル:ページがロードされる前に、Objective-CからJS関数を実行しようとします。
UIViewControllerで IWebViewのデリゲートメソッド _webViewDidFinishLoad:
_を実装し、そこで[graphView stringByEvaluatingJavaScriptFromString:@"methodName()"];
を呼び出して、関数が呼び出されることを確認しますafterページがロードされました。
もう少し明確にするために。
.h-UIWebViewDelegateを実装します
@interface YourViewController : UIViewController <UIWebViewDelegate>
@property (weak, nonatomic) IBOutlet UIWebView *webView;
@end
.m
- (void)viewDidLoad
{
[super viewDidLoad];
NSString *path = @"http://www.google.com";
[_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:path]]];
_webView.delegate = self; //Set the webviews delegate to this
}
- (void) webViewDidFinishLoad:(UIWebView *)webView
{
//Execute javascript method or pure javascript if needed
[_webView stringByEvaluatingJavaScriptFromString:@"methodName();"];
}
コードでデリゲートを行う代わりに、ストーリーボードからデリゲートを割り当てることもできます。