2016-08-18 56 views
0

我正在嘗試在webview中呈現樂譜HTML(我使用JavaScript庫生成)。這裏是我的代碼:在WebView中加載HTML(以及Javascript源代碼無法正常加載) - Swift

ViewController.swift(部分):

let web = WKWebView() 
let localfilePath = NSBundle.mainBundle().URLForResource("index", withExtension: "html") 
let myRequest = NSURLRequest(URL: localfilePath!) 
web.loadRequest(myRequest) 

的index.html:

<html> 
<script src="http://cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.js"></script> 
<script src="http://code.jquery.com/jquery-2.1.0.min.js"></script> 
<script src="http://www.vexflow.com/support/vexflow-min.js"></script> 
<script src="http://www.vexflow.com/support/tabdiv-debug.js"></script> 
<body> 
    <h1 id="someElement"> Test </h1> 
    <div style="width:680; margin-left: auto; margin-right: auto;"> 
     <div class="vex-tabdiv"> 
      options width= 700 space=20 
      tabstave notation=true key=A time=4/4 
      notes :q =|: (5/2.5/3.7/4) :8 7-5h6/3 ^3^ 5h6-7/5 ^3^ :q 7V/4 | 
      notes :8 t12p7/4 s5s3/4 :8 3s:16:5-7/5 :h p5/4 
      text :w, |#segno, ,|, :hd, , #tr 
     </div> 
    </div> 
</body> 
</html> 

雖然HTML做負載,它沒有正確呈現。如果我使這個HTML的瀏覽器,它看起來就像這樣:

enter image description here

然而,當我嘗試我的WebView中運行它,我得到:

enter image description here

正如你所看到的,HTML呈現時沒有JS。我已經通過谷歌/ SO,並試圖像製作的JS文件的本地和進口他們作爲

<script src="lodash.js"></script> 

以及使用WKWebView的executeJavascript功能無濟於事各種事情,但我必須失去了一些東西挖了很多..提前致謝!

回答

0

我想通了這個問題,它有兩個主要的事情要做:

  1. 使資產文件(JS,CSS等)的地方。有一個問題涉及CDNs,因爲Huy提到了
  2. 我的vexflow設置有問題。該div中的換行符是必需的,否則將無法工作。
  3. 確保如果您正在使用vexflow,您導入vexflow-min.js導入vextab.js

以前希望這可以幫助別人,將來別人! :)

1

原因可能是js文件正在加載,而你的div渲染。您可以將外部js文件保存到本地並引用這些本地文件。 它爲我工作。

+0

嗨!正如我在文章末尾提到的那樣,我試圖將這四個文件保存在本地,然後再保存這些文件,但是卻得到了相同的結果。你有沒有試過我的代碼,它爲你工作? – Nico

+0

我實際上發現了兩個與我的代碼問題並解決了問題。再次感謝! – Nico