โหลดไฟล์ html ในเครื่องจากไดเรกทอรีเอกสารของแอปพลิเคชันอย่างรวดเร็ว wkwebview

ฉันกำลังพยายามโหลดไฟล์ html ในเครื่องซึ่งดาวน์โหลดไปยังแอปพลิเคชันของฉันด้วย wkwebview นอกจากไฟล์ html นี้ ฉันกำลังดาวน์โหลดไฟล์ js สองไฟล์ โดยมีการอ้างอิงภายในไฟล์ html

แต่สิ่งที่ฉันทำ พวกมันไม่โหลดใน wkwebview

 @IBOutlet var webView: WKWebView!
    @IBOutlet var act: UIActivityIndicatorView!
    override func viewDidLoad() {
        super.viewDidLoad()
        // Adding webView content
        webView.uiDelegate = self
        webView.navigationDelegate = self


let fm = FileManager.default
    let docsurl = try! fm.url(for:.documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
    let myurl = docsurl.appendingPathComponent("index.html")
    print("my url = ",myurl )
// myurl prints file///var/some directories/index.html
let request = URLRequest(url: myurl!)
            webView.load(request)
}

ไฟล์ html ของฉัน

<!DOCTYPE html>
 <html> 
<head>
<script src="jquery.min.js"></script>
<script>
$(document).ready(function(){
  $("button").click(function(){
    $("p").hide();
  });
});
</script>
</head>
<body>

<h2>This is a heading</h2>

<p>This is a paragraph.</p>
<p>This is another paragraph.</p>

<button>Click me</button>

</body>
</html>

แต่มันไม่โหลดบนหน้าจอจาก safari(Develop/) ฉันเห็นว่า An error occured trying to load the resource หน้ามาเป็น about:blank


person milsha    schedule 29.01.2019    source แหล่งที่มา
comment
myurl พิมพ์อะไร? คุณเพลิดเพลินกับ WKWebView ที่นี่เป็นอย่างไรบ้าง?   -  person TheTiger    schedule 29.01.2019
comment
But it is not loading on the screen from safari(Develop/) มันหมายความว่าอะไร? Safari เป็นเบราว์เซอร์ภายนอก คุณหมายถึง WebView เท่านั้น ไม่ใช่ Safari ใช่หรือไม่   -  person TheTiger    schedule 29.01.2019
comment
ไม่มีปัญหากับรหัสนี้ let request = URLRequest(url: myurl) self.webView.load(request) คุณต้องตรวจสอบว่ามีไฟล์อยู่ใน URL เดียวกันหรือไม่โดยสร้างวัตถุ Data จาก URL นี้   -  person TheTiger    schedule 29.01.2019
comment
@TheTiger ใช่ มันทำงานได้ดีในเครื่องจำลองของฉัน แต่ไม่ทำงานใน iPhone (อุปกรณ์จริง)   -  person milsha    schedule 29.01.2019
comment
อัตราการยอมรับของคุณคือ 0 คุณยังไม่ได้ยอมรับคำตอบใดคำตอบหนึ่งสำหรับคำถามทั้งหมดของคุณ นี่ไม่ดีเลย   -  person TheTiger    schedule 25.02.2019


คำตอบ (2)


สวิฟท์ 4.2

 //load HTML
let bundle = Bundle.main
var path = bundle.path(forResource: "index", ofType: "html")
var html = ""
do {
    try html = String(contentsOfFile: path!, encoding: .utf8)
} catch {
//ERROR
}
let urlstr = "http://website.com"
webViewWK.loadHTMLString(html, baseURL: URL(string: urlstr)!)
person AleyRobotics    schedule 29.01.2019

โดยพื้นฐานแล้ว URLRequest ถูกสร้างขึ้นมาเพื่อ URL แบบสด สำหรับไฟล์ระบบ ให้โหลด URL คุณต้องใช้วิธีการด้านล่างและมันจะได้ผล:

/*! @abstract Navigates to the requested file URL on the filesystem.
     @param URL The file URL to which to navigate.
     @param readAccessURL The URL to allow read access to.
     @discussion If readAccessURL references a single file, only that file may be loaded by WebKit.
     If readAccessURL references a directory, files inside that file may be loaded by WebKit.
     @result A new navigation for the given file URL.
     */
    @available(iOS 9.0, *)
    open func loadFileURL(_ URL: URL, allowingReadAccessTo readAccessURL: URL) -> WKNavigation?

ดังนั้น:

self.webView.loadFileURL(myurl, allowingReadAccessTo: myurl)
person TheTiger    schedule 29.01.2019