iOS載入本地js css等框架

2021-07-10 05:02:43 字數 2530 閱讀 2809

這裡用到了nsurlprotocol來實現載入這些本地檔案:

1.先子類化乙個nsurlprotocol。

2.在你的uiwebview裡註冊這個nsurlprotocol協議。

每當你的uiwebview傳送請求的時候,nsurlprot

ocol都會執行下面的方法

+ (bool)caninitwithrequest:(nsurlrequest *)request
返回yes,則會繼續執行下面的
+ (nsurlrequest *)canonicalrequestforrequest:(nsurlrequest *)request
- (void)startloading
等方法。否則則不執行。

這時候我們就會想在startloading方法裡面去載入那些本地框架。

下面貼**:

+ (bool)caninitwithrequest:(nsurlrequest *)request 

//如果工程裡找不到某檔案,return no;

nsstring *tempurl = request.url.resourcespecifier;

if (tempurl != nil && ![tempurl isequal: @""])

else

nsarray *array = [tempurl componentsseparatedbystring:@"/"];

if (array.count>0)

nsstring *path= [[nsbundle mainbundle] pathforresource:tempurl oftype:nil];

if (!path)

//如果在工程下找到滿足條件檔案,則可執行startloading

nsstring * url = request.url.absolutestring;

if ([url rangeofstring:@".js"].location != nsnotfound || [url rangeofstring:@".css"].location != nsnotfound)

return no;

}

下面是關鍵:

- (void)startloading 

nsstring *path= [[nsbundle mainbundle] pathforresource:url oftype:nil];//這裡是獲取本地資源路徑 如 :js、css 等

if (!path)

//根據路徑獲取mimetype (以下函式方法需要新增.h檔案的引用,)

// get the uti from the file's extension:

cfstringref pathextension = (__bridge_retained cfstringref)[path pathextension];

cfstringref type = uttypecreatepreferredidentifierfortag(kuttagclassfilenameextension, pathextension, null);

cfrelease(pathextension);

// the uti can be converted to a mime type:

nsstring *mimetype = (__bridge_transfer nsstring *)uttypecopypreferredtagwithclass(type, kuttagclassmimetype);

if (type != null)

cfrelease(type);

// 這裡需要用到mimetype

nsurlresponse *response = [[nsurlresponse alloc] initwithurl:super.request.url

mimetype:mimetype

expectedcontentlength:-1

textencodingname:nil];

nsdata *data = [nsdata datawithcontentsoffile:path];//載入本地資源

debuglog(@"要替換的本地資源路徑:%@",path);

//硬編碼 開始嵌入本地資源到web中

[[self client] urlprotocol:self didreceiveresponse:response cachestoragepolicy:nsurlcachestoragenotallowed];

[[self client] urlprotocol:self didloaddata:data];

[[self client] urlprotocoldidfinishloading:self];

}

這樣每次uiwebview載入網頁的時候遇到符合條件(即本地)的檔案時,便會載入本地檔案。

that's all.

iOS載入本地HTML

目標 讀取本地的html檔案來展示h5頁面。ios8以後,蘋果推出了新框架webkit。所以分別用uiwebview和wkwebview來實現看看。以下僅當html檔案的檔名為index.html。webview除錯方法是在模擬器顯示webview之後,開啟safari的 開發 tab的simula...

載入js,css等靜態檔案失敗的解決方法

第一 在web.xml裡面新增這段 注意 一定一定要放在org.springframework.web.servlet.dispatcherservlet前面!第二 還要在springmvc的配置檔案dispatcherservlet.xml裡面加這句 或者加下面這幾句 有其他要載入的檔案資源,請按...

iOS載入本地html,css樣式失效問題

檔案拖入專案的時候選的 這樣的話,檔案在編譯成 ipa 的時候。檔案會拷貝到根目錄下。而 中是這樣寫的,nsstring filepath nsbundle mainbundle pathforresource protocol oftype html indirectory nsstring ht...