Wie aktivieren Sie javascript in WebView
Habe ich eine sehr einfache Mac-Cocoa-app, die nur ein Web-View, lädt eine HTML-Datei mit etwas CSS und JavaScript. Hakte ich habe die app Delegaten an diese Methode:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
NSString* filePath = [[NSBundle mainBundle] pathForResource: @"index" ofType: @"html"];
NSURL *url = [NSURL URLWithString: filePath];
[[self.webView mainFrame] loadHTMLString: [NSString stringWithContentsOfFile: filePath] baseURL: url];
}
Den index.html die Datei enthält die folgenden:
<html>
<head>
<title>Hello, World!</title>
<link href="style.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
jQuery(function($){
$('h1').fadeOut()
})
</script>
</head>
<body>
<h1>Hello, World!</h1>
</body>
</html>
Stil.css-Datei wird korrekt geladen, weil ich den hintergrund in Grau ist, so weiß ich es laden kann andere Vermögenswerte, die aus der resource-bundle. Der javascript-code nicht ausgeführt. Wenn ich öffnen index.html in Safari, die Hello World h1
verschwindet, wie erwartet. Warum werden nicht diese geschehen Sie in der app in meiner WebView? Muss ich etwas tun, um JavaScript zu aktivieren? Sie das Kontrollkästchen neben JavaScript aktiviert ist im Interface Builder.
Den code gibt es im http://github.com/pjb3/WebViewApp
InformationsquelleAutor pjb3 | 2009-07-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie nicht haben, etwas zu tun, um JavaScript zu aktivieren; es aktiviert in die
WebView
standardmäßig. Und wie Sie gesagt haben, Sie können immer check-in Interface Builder, JavaScript checkbox ausgewählt ist.Was Sie zu tun haben, obwohl, stellen Sie sicher, dass die
baseURL
bist du die Angabe richtig ist (da in der html-Datei, die Sie sich beziehenjquery.js
mit einem relativen URL verwenden nur den Dateinamen) und das hast du enthalten diejquery.js
- Datei in der bundle-Ressourcen.Den code, den Sie geschrieben wird in einem
nil
Wert für dieurl
variable:+URLWithString:
erwartet, dass eine gültige URL-Zeichenkette (das konform zu RFC 2396) als argument (die der Dateisystem-Pfad, den Sie uns zur Verfügung stellen ist nicht). Was Sie wollen, ist+fileURLWithPath:
, und Sie müssen auch die Verwendung der Dateisystem-Pfad des Verzeichnisses, in demindex.html
undjquery.js
befinden, die Sie bekommen können, durch das entfernen der Dateiname aus dem Pfad, den Sie haben (mitNSString
's-stringByDeletingLastPathComponent:
). Hier ist, wie bekommen Sie die richtigebaseURL
:Ah, habe ich es herausgefunden. Ich wusste nicht, was Sie meinte, "den jquery.js Datei in die Ressourcen bündeln". Ich schleppte die .js Dateien in den Ordner Ressourcen in der "Copy Bundle Resources" ähm...Sache :), unter WebViewApp im Ziel. Alles ist gut jetzt, danke!
Das ist Laura. Ich bin stucked in das gleiche problem aber nach dem ur-Lösung auch das problem nicht gelöst. Bitte sagen Sie mir, wie können wir überprüfen, ob javascript aktiviert ist in den IB. Ich din nicht finf javascript aktivieren.
InformationsquelleAutor hasseg
Nur ein kurzes update für alle, die noch damit kämpfen... ich hatte genau das gleiche problem wo ich hatte eine html-Seite mit dem prototype.js Bibliothek geladen, die in den <head></head> - Abschnitt der Seite. Aber die Bibliothek war nicht geladen, wenn ich öffnete die gleiche Seite in einem WebView in eine Cocoa-app. Tatsächlich, keine Skript-Dateien geladen werden (auch meine eigenen) zu funktionieren schien, in der WebView.
Ich habe die oben genannten github code aus dem link pjb3 zur Verfügung gestellt, in der Hoffnung, dass vielleicht, die er gefunden hatte, ein Update und aktualisiert. Kein solches Glück. Es hatte immer noch die gleichen Probleme.
Und dann habe ich beschlossen, zu schauen in der Paket-Inhalt der kompilierten app (also das wäre WebViewApp/Inhalt/Ressourcen aus der build/Debug oder build/Release-Verzeichnis, in dem XCode kompilieren der app)... Oho! Die javascript-Dateien, die er hatte, in der Ressourcen-Abschnitt der XCode Projekt nicht tatsächlich kopiert wird über den integrierten app-Ressourcen-Verzeichnis. Ich schaute in mein Projekt und es war das gleiche problem. Das beheben kann? Einfach ziehen Sie die Skripts, die Sie Hinzugefügt haben, in der "Copy Bundle Resources" - Sektion des app-target in XCode und voila, Sie werde da sein (und die Dinge werden tatsächlich funktioniert!).
Ich dachte, alles, was, die Sie in Ressourcen wurde immer kopiert automatisch, aber ich denke, es war nicht. Und leider mit einem WebView, es sei denn, Sie machen ein bisschen Arbeit, Sie don ' T haben alle großen web-debugging-Kram, Firefox oder Safari haben würde, wäre dieses problem einfacher zu finden. Also, wenn Sie Zweifel haben, überprüfen Sie, ob Ihre aktuelle kompilierte app verfügt über die Ressourcen, die es braucht, unter seinem Ressourcen-Verzeichnis (ist das vielleicht der programmer ' s version von "Ist es angeschlossen?"?). Dies hat mich viel Kopfzerbrechen, und mein einziger Trost für die verlorenen Stunden, die ich vielleicht sparen Sie einige andere Leute aus der gleichen. Happy coding!
InformationsquelleAutor David Ackerman
Zusätzlich zu dem, was hasseg sagte: Warum nicht diese um die Datei zu laden, statt?
InformationsquelleAutor Peter Hosey