gpt4 book ai didi

javascript - window.location 未设置/webView shouldStartWithLoadRequest 未被调用

转载 作者:行者123 更新时间:2023-11-29 03:19:24 25 4
gpt4 key购买 nike

我一直在研究我在 StackOverflow 上找到的几个主题,但我似乎无法正确处理。

我的应用程序在本地存储一个 HTML 页面,我正在尝试让一些 Javascript 与我的 obj-c 代码一起工作。

这是我的 JavaScript 文件:

<button onclick="myFunction()">Try it</button>


<script>
function myFunction()
{
window.location.href = "ios:webToNativeCall";
alert(window.location.href);
}
</script>

这是我的obj-c方法

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSLog(@"test");
if ([[[request URL] absoluteString] hasPrefix:@"ios:"]){
NSLog(@"test");
[self webToNativeCall];
return NO;
}

我会发布两个单独的主题,但我感觉这些问题是相互关联的。在 JS 文件中,警报打印出我系统中 .html 文件的正确路径。 NSLog(@"test") 都没有被执行。

我已经设置了 WebView 委托(delegate):

@interface WebBrochureViewController : UIViewController <UIWebViewDelegate>

感谢任何帮助或提示。

最佳答案

您的 Storyboard 设置可能有问题。您应该首先尝试一个简单的案例作为概念证明,然后学习如何将其适应更大的图景。

这里有一个很好的简单 View Controller 来解决你的问题。

@interface MyViewController : UIViewController <UIWebViewDelegate>
@property (nonatomic, weak) IBOutlet UIWebView *webView;

@end

@implementation MyViewController

- (void)loadView
{
UIView *view = [[UIView alloc] initWithFrame:CGRectZero];

[view addSubview:({
UIWebView *webView = [[UIWebView alloc] initWithFrame:view.bounds];
webView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
webView.delegate = self;
self.webView = webView;
})];
self.view = view;
}

- (void)viewDidLoad
{
[super viewDidLoad];

NSURL *url = [[NSBundle mainBundle] URLForResource:@"index" withExtension:@"html"];
NSAssert(url!=nil, @"Could not find URL for index.html");
NSData *data = [NSData dataWithContentsOfURL:url];
[self.webView loadData:data
MIMEType:@"text/html"
textEncodingName:@"utf-8"
baseURL:nil];
}

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSLog(@"[%@] Delegate method started.", NSStringFromSelector(_cmd));
if ([request.URL.scheme isEqualToString:@"ios"]) {
NSLog(@"[%@] Communication Received.", NSStringFromSelector(_cmd));
return NO;
}
return YES;
}

@end

关于javascript - window.location 未设置/webView shouldStartWithLoadRequest 未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21296934/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com