JSContextFoundation is a Swift adapter for the JavaScriptCore Framework to build up the JavaScript runtime environment.
- iOS 8.0 or higher
- Swift 2.3 or higher
Swift 2.3
pod 'JSContextFoundation', '~> 0.0.1'
Swift 3.1
pod 'JSContextFoundation', '~> 0.1.1'
Swift 2.3
.Package(url: "https://github.com/kf99916/JSContextFoundation.git", majorVersion: 0.0.1)
Swift 3.1
.Package(url: "https://github.com/kf99916/JSContextFoundation.git", majorVersion: 0.1.1)
JSContextFoundation builds up the global objects for the JavaScript runtime environment to allow you execute JavaScript code like as in browser or Node.js. Here is the support list for the global objects:
global;
window;
console
.log([data][, ...]);
.info([data][, ...]);
.warn([data][, ...]);
.error([data][, ...]);
import JSContextFoundation
let jsContext = JSContextFoundation()
To import JavaScript module, the source of module can be file path or URL:
let path = NSBundle(forClass: self.dynamicType).pathForResource("Module", ofType: "js")!
do {
try jsContext.requireWithPath(path)
} catch JSContextFoundationError.FileNotFound {
print(path + " is not found")
} catch JSContextFoundationError.FileNotLoaded {
print(path + " cannot be loaded")
} catch {
print("Unknow Exception")
}
// ...
let url = NSURL(string: "https://FQDN/Module.js")!
jsContext.requireWithUrl(url, completionHandler: {error in
if let error = error {
switch error {
case JSContextFoundationError.FileNotFound:
print(url.absoluteString + " is not found")
case JSContextFoundationError.FileNotDownloaded:
print(url.absoluteString + " is not downloaded")
default:
print("Unknown Error")
}
return
}
// ...
})
All other usage is the same as JSContext. See JSContext in the Apple document for details.
If you are using JSContextFoundation in your app and want to be listed here, simply create a pull request.
I am always curious who is using my projects :)
Hikingbook - by Zheng-Xiang Ke
Zheng-Xiang Ke, kf99916@gmail.com
JSContextFoundation is available under the MIT license. See the LICENSE file for more info.