2012-06-28 18 views
9

Ich habe eine iOS App, um eine HTML-Zeichenfolge zu laden, die auf externe CSS-Datei und Javascript-Datei im selben Verzeichnis beziehen.iOS loadHtmlString in UIWebView funktioniert nicht mit Javascript

Hier ist meine HTML-Datei:

<html> 
<head> 
    <meta name="viewport" content= user-scalable="no", width="device-width" /> 
    <meta http-equiv="Content-Type" content="text/html"; charset="UTF-8"/> 
    <link rel="stylesheet" type="text/css" href="mystyle.css" /> 
    <script type="text/javascript" src="myjavascript.js"></script> 
</head> 

Die CSS-Datei funktioniert gut, aber es scheint, die js Datei nie geladen. Was könnte der Grund sein?

Nebenbei verwende ich loadHtmlString: BaseUrl-Methode, um meine HTML-Zeichenfolge zu laden.

Dank

+1

Verweisen [http://stackoverflow.com/questions/7012537/sourcing-local-javascript-in-uiwebview-ios?rq=1] Link und hoffe, es ist hilfreich, wie ich es nicht versucht habe. –

+0

Können Sie Ihren iOS Code dafür zeigen? – nhahtdh

+3

Vergewissern Sie sich, dass sich das Javascript in Ihrem Abschnitt * Ressourcen für Kopienpakete kopieren und nicht im Abschnitt * Quellen kompilieren * befindet. Ich weiß nicht warum, aber manchmal denkt Xcode, dass es dein Javascript kompilieren sollte. Natürlich kann es nicht, so dass Sie nur mit einem Haufen von No-Op-Code und keine Ressource für Ihren HTML-Code enden. – borrrden

Antwort

6

Diese Frage ist ein bisschen alt, aber da es nicht beantwortet wird, würde ich darauf hinweisen mag, wenn Sie Ihre Web-Ansicht mögen eine JavaScript-Datei in Ihrem Paket enthält Wohnsitz zu laden, die Art und Weise es zu tun ist:

[webView loadHTMLString:html 
       baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]]; 

Wenn Sie die baseURL nicht angeben, besteht keine Möglichkeit, dass die JavaScript-Datei geladen wird.

+0

Genau das habe ich gemacht. Das Problem ist das Javascript ist immer noch nicht geladen, obwohl die CSS ist in Ordnung. –

+0

Ich sehe ... Sind Sie sicher, dass Ihr Javascript keine Fehler enthält? Das Problem mit JS ist, dass es im Hintergrund fehlschlägt. als sehr rohe Debugging, könnten Sie einige Alert-Anweisungen (sagen wir, die erste Zeile in Ihrer js-Datei), und sehen, ob sie Pop-up ... – sergio

+0

Ja, ich habe testen, dass nur eine Zeile von JS hinzufügen Code zu alarmieren.Aber es funktioniert nicht. Das CSS funktioniert. Danke trotzdem. –

2

wie die anderen gesagt haben,

  • Verwendung baseURL: [NSURL fileURLWithPath: [[NSBundle main] bundlePath]]];

  • kopieren Sie Bundle-Ressourcen und nicht in Compile Resources.

das ist es!

5

Standardmäßig fügt xcode neue Javascript-Dateien in Compile Resources statt in Bundle Resources ein. Klicken Sie auf Ihr Projekt und dann auf Ihr Ziel. Unter "Build Phases" können Sie die Javascript-Dateien unter "Compile Sources" sehen. Ziehen Sie sie nach unten zu 'Bundle-Ressourcen kopieren'.

+1

Genau das ist mir passiert, als ich ein paar JS-Dateien in mein Projekt gezogen habe. Ich habe sie aus ** Kompilierressourcen ** entfernt, weil Xcode einen Fehler ausgegeben hat, aber ohne dass sie in ** Bundle-Ressourcen ** waren, waren sie für meine Anwendung nicht verfügbar. Vielen Dank! –

+0

Das hat mein Leben gerettet! Danke @Kevin Grenzen! – gilsaints88

Verwandte Themen