Ada beberapa perpustakaan, tetapi saya tidak menggunakan semua ini dalam proyek besar, jadi Anda mungkin ingin mencobanya:
-
Namun, menurut saya ini adalah sesuatu yang cukup sederhana sehingga Anda dapat mencobanya sendiri. Saya pribadi melakukan ini persis ketika saya perlu melakukan itu. Anda juga dapat membuat perpustakaan sederhana yang sesuai dengan kebutuhan Anda.
1. Jalankan metode JS dari Objective-C
Ini sebenarnya hanya satu baris kode.
NSString *returnvalue = [webView stringByEvaluatingJavaScriptFromString:@"your javascript code string here"];
Rincian lebih lanjut tentang Dokumentasi UIWebView resmi .
2. Jalankan metode Objective-C dari JS
Sayangnya ini sedikit lebih kompleks, karena tidak ada properti windowScriptObject (dan kelas) yang sama yang ada di Mac OSX yang memungkinkan komunikasi lengkap antara keduanya.
Namun, Anda dapat dengan mudah memanggil dari URL yang dibuat khusus javascript, seperti:
window.location = yourscheme://callfunction/parameter1/parameter2?parameter3=value
Dan hentikan itu dari Objective-C dengan ini:
- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {
NSURL *URL = [request URL];
if ([[URL scheme] isEqualToString:@"yourscheme"]) {
// parse the rest of the URL object and execute functions
}
}
Ini tidak sebersih yang seharusnya (atau dengan menggunakan windowScriptObject) tetapi berhasil.
3. Dengarkan peristiwa JS asli dari Objective-C (misalnya peristiwa siap DOM)
Dari penjelasan di atas, Anda melihat bahwa jika Anda ingin melakukan itu, Anda harus membuat beberapa kode JavaScript, melampirkannya ke acara yang ingin Anda pantau dan memanggil panggilan yang benar window.location
untuk kemudian dicegat.
Sekali lagi, tidak bersih sebagaimana mestinya, tetapi berhasil.