在 iOS 的 WKWebView 上通过 HTML 文件加载 Javascript 文件
Load Javascript files through HTML file on WKWebView in iOS
我需要通过 HTML
文件加载 Javascript 文件。我按以下屏幕截图中显示的顺序构建了文件。
HTML
head 标签包含要调用的 Javascript
个文件,如下所示:
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
<script type="text/javascript" src="AjaxCapturer.js"></script>
<script type="text/javascript" src="authenticate.js"></script>
</head>
所以我一直在使用 UIWebView
加载页面并正确加载,如下面的屏幕截图所示。
现在,如果我 运行 使用 WKWebView
同样的东西,那么页面将继续加载,如下面的屏幕截图所示。
Javascript
文件正在触发(添加警报)但页面未在 WKWebView
中加载。下面是我的代码逻辑:
-(void)loadWebVW{
WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
WKPreferences *pref = [[WKPreferences alloc] init];
pref.javaScriptEnabled = YES;
pref.javaScriptCanOpenWindowsAutomatically = YES;
config.preferences = pref;
CGRect vwFrame = CGRectMake(10, 80, 300, 480);
WKWebView *webVW = [[WKWebView alloc] initWithFrame:vwFrame configuration:config];
[self.view addSubview:webVW];
webVW.navigationDelegate = self;
webVW.UIDelegate = self;
NSString *htmlPath = [[NSBundle mainBundle] pathForResource:@"offline_Forms"
ofType:@"html"];
NSString *html = [NSString stringWithContentsOfFile:htmlPath
encoding:NSUTF8StringEncoding
error:nil];
NSURL *baseUrl = [NSURL fileURLWithPath:
[NSString stringWithFormat:@"%@/JavaScript",
[[NSBundle mainBundle] bundlePath]]];
[webVW loadHTMLString:html baseURL:baseUrl];
//or//
// [webVW loadRequest:[NSMutableURLRequest requestWithURL:[NSURL URLWithString:htmlPath]]];
}
我们是否需要添加任何额外的东西才能在 WKWebView
中加载它。请帮忙解决这个问题。提前致谢。
我发现这是 iOS
10.3 中的一个已知问题,稍后在 iOS
10.3.2 中修复,请参阅 link
from Apple developer forum 获取更多信息。有时我觉得 Simulator
中存在同样的问题,但在物理设备中工作正常。因此,请确保每次验证 WKWebView
物理设备的功能。
我需要通过 HTML
文件加载 Javascript 文件。我按以下屏幕截图中显示的顺序构建了文件。
HTML
head 标签包含要调用的 Javascript
个文件,如下所示:
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
<script type="text/javascript" src="AjaxCapturer.js"></script>
<script type="text/javascript" src="authenticate.js"></script>
</head>
所以我一直在使用 UIWebView
加载页面并正确加载,如下面的屏幕截图所示。
现在,如果我 运行 使用 WKWebView
同样的东西,那么页面将继续加载,如下面的屏幕截图所示。
Javascript
文件正在触发(添加警报)但页面未在 WKWebView
中加载。下面是我的代码逻辑:
-(void)loadWebVW{
WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
WKPreferences *pref = [[WKPreferences alloc] init];
pref.javaScriptEnabled = YES;
pref.javaScriptCanOpenWindowsAutomatically = YES;
config.preferences = pref;
CGRect vwFrame = CGRectMake(10, 80, 300, 480);
WKWebView *webVW = [[WKWebView alloc] initWithFrame:vwFrame configuration:config];
[self.view addSubview:webVW];
webVW.navigationDelegate = self;
webVW.UIDelegate = self;
NSString *htmlPath = [[NSBundle mainBundle] pathForResource:@"offline_Forms"
ofType:@"html"];
NSString *html = [NSString stringWithContentsOfFile:htmlPath
encoding:NSUTF8StringEncoding
error:nil];
NSURL *baseUrl = [NSURL fileURLWithPath:
[NSString stringWithFormat:@"%@/JavaScript",
[[NSBundle mainBundle] bundlePath]]];
[webVW loadHTMLString:html baseURL:baseUrl];
//or//
// [webVW loadRequest:[NSMutableURLRequest requestWithURL:[NSURL URLWithString:htmlPath]]];
}
我们是否需要添加任何额外的东西才能在 WKWebView
中加载它。请帮忙解决这个问题。提前致谢。
我发现这是 iOS
10.3 中的一个已知问题,稍后在 iOS
10.3.2 中修复,请参阅 link
from Apple developer forum 获取更多信息。有时我觉得 Simulator
中存在同样的问题,但在物理设备中工作正常。因此,请确保每次验证 WKWebView
物理设备的功能。