javascript - tutorial - wkwebview apple
UIWebView no carga el archivo Javascript externo (4)
Tengo el siguiente código de aspecto inocente (index.html), pero no carga el archivo code.js
Funciona bien si copio / pego el contenido del archivo en la página HTML. Ambos archivos index.html
y code.js
están en el mismo directorio. Este es el fragmento de código. Cualquier ayuda sería genial.
index.html:
<html>
<head>
<script type="text/javascript" src="code.js"></script>
</head>
<body onload="drawImage()">
<div><canvas id="canvas" width="320" height="480"></canvas></div>
</body>
</html>
ViewController.m:
- (void)viewDidLoad {
[super viewDidLoad];
// load the first webpage
[homePageWebView loadRequest:[NSURLRequest requestWithURL:[NSURLfileURLWithPath:
[[NSBundle mainBundle] pathForResource:@"index"ofType:@"html"] isDirectory:NO]]];
}
He descubierto que Xcode cree que el archivo js debe compilarse.
Abra el proyecto en Xcode. Vaya a "Objetivos" y busque "Compilar fuentes". Si ve su archivo js en esa carpeta, muévalo a la carpeta "Copiar recursos del paquete" y elimínelo de la carpeta "Compilar fuentes".
Elimine la aplicación de su iPhone si ya está instalada para la prueba. Ve al menú Generar en Xcode y limpia todos los objetivos. Luego recompila
Compruebe ahora si su archivo HTML realmente ve su archivo js ahora.
Linda
También me enfrenté al mismo problema: lo superé haciendo lo simple al agregar los archivos a XCode. Hice un pequeño cambio que se muestra en la figura siguiente:
En la figura siguiente, una es para agregar archivos HTML, Javascript y CSS, y la segunda es para archivos generales de XCode.
Para complementar la respuesta de Linda, aquí es donde encuentras los archivos:
Necesita leer el archivo html en una cadena y establecer el URL base al cargar para que se puedan entender las rutas relativas.
NSError* error;
NSString* html = [NSString stringWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"] encoding:NSASCIIStringEncoding error:&error];
[webview loadHTMLString:html baseURL:[self getBaseURL]];
- (NSURL*) getBaseURL {
NSString* path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];
NSRange r = [path rangeOfString:@"/" options:NSBackwardsSearch];
path = [path substringToIndex:r.location];
path = [path stringByReplacingOccurrencesOfString:@"/" withString:@"//"];
path = [path stringByReplacingOccurrencesOfString:@" " withString:@"%20"];
path = [NSString stringWithFormat:@"file:/%@//",path];
return [NSURL URLWithString:path];
}
Algo así debería funcionar para ti.