2017-01-21 7 views
10

मेरे आईओएस 10 एप्लिकेशन में मेरे पास मूल foo.html है। मार्कअप सीधे आगे है:क्या WKWebView द्वारा लोड की गई HTML फ़ाइल में जावाड एम्बेड किया जा सकता है?

<!doctype html> 
<html> 
    <head> 
     <meta charset="utf-8"> 
     <meta http-equiv="x-ua-compatible" content="ie=edge"> 
     <title>Example</title> 
     <meta name="viewport" content="width=device-width, initial-scale=1"> 
    </head> 
    <body> 
     <p>Hello, World!</p> 

     <div id="container"></div> 
    </body> 
    <script type="text/javascript" src="bar.js"></script> 
    <script type="text/javascript"> 
     // Bar is defined in bar.js 
     var bar = new Bar(); 
    </script> 
</html> 

मैं निम्नलिखित के साथ इसे लोड:

let htmlFile = Bundle.main.path(forResource: "foo", ofType: "html") 
let html = try? String(contentsOfFile: htmlFile!, encoding: String.Encoding.utf8) 
webView.loadHTMLString(html!, baseURL: nil) 

मेरे iOS एप्लिकेशन में, मैं bar चर का उपयोग करने की कोशिश कर रहा हूँ। बाद डोम WKNavigationDelegate की विधि द्वारा के रूप में पुष्टि भरी हुई है द्वारा: func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!)

मैं इस तरह कोड है:

var htmlContent : String { 
    var s = "console.log(bar)" 

    return s 
} 

webView.evaluateJavaScript(htmlContent, completionHandler: { result, error in 
    if let error = error { 
    print("error: \(error)") 
    } 

    if let result = result { 
    print("result: \(result)") 
    } 
}) 

मैं एक त्रुटि हो रही अंत:

error: Error Domain=WKErrorDomain Code=4 "A JavaScript exception occurred" UserInfo={WKJavaScriptExceptionLineNumber=1, WKJavaScriptExceptionMessage=ReferenceError: Can't find variable: Bar, WKJavaScriptExceptionSourceURL=about:blank, NSLocalizedDescription=A JavaScript exception occurred, WKJavaScriptExceptionColumnNumber=47} 

मैं क्या कोशिश कर रहा हूँ है संभव करने के लिए? क्या मुझे इस समस्या से अलग तरीके से संपर्क करना है? evaluateJavaScript के लोड होने के बाद मेरे डोम के दायरे तक पहुंच है क्योंकि अभी के रूप में, ऐसा लगता है कि ऐसा नहीं है।

+0

आप ठीक उसी कोड दिखा रहे हैं जब आप उस त्रुटि मिलती है? 'WKJavaScriptExceptionColumnNumber = 47' यह सुझाव दे रहा है कि' webView.evaluateJavaScript' पर जावास्क्रिप्ट कोड कम से कम 48 वर्ण हैं, लेकिन आपका 'htmlContent' केवल 16 है। सही जानकारी दिखाने के बिना, कोई भी आपकी मदद नहीं कर सकता है। – OOPer

+0

यह सही कोड नहीं है, लेकिन सटीक कोड किसी भी माध्यम से संदर्भ के साथ मदद नहीं करेगा। यह वही करता है जो यह उदाहरण कर रहा है और वह उस ऑब्जेक्ट को बनाने का प्रयास कर रहा है जो नामस्थान/कोड 'bar.js' में उपलब्ध है, सिवाय इसके कि ऐसा लगता है कि यह' bar.js' की सामग्री तक नहीं पहुंच सकता है और/या यह बाहर है दायरे का – randombits

+0

सटीक कोड कई मामूली गलतियों की संभावनाओं को खत्म करने में मदद करेगा। वैसे भी, बक्षीस आपकी मदद करेगा। सौभाग्य। – OOPer

उत्तर

10

मैं यह पता लगा - यहाँ जवाब डाल उम्मीद कर इसे किसी और में मदद करता है जाएगा:

समस्या यहाँ था:

webView.loadHTMLString(html!, baseURL: nil)

मैं सुनिश्चित करने के लिए baseURL नहीं के बराबर है, तो निम्न फिक्स नहीं है था यह:

webView.loadHTMLString(html!, baseURL: Bundle.main.bundleURL)

+13

शांति में आराम 500 प्रतिनिधि :( – FrankerZ

+0

@ फ्रैंकरजेड और रैंडोम्बिट्स, क्या फॉर्म ठीक से लोड हो रहा है? –

संबंधित मुद्दे