มีห้องสมุดอยู่สองสามแห่ง แต่ฉันไม่ได้ใช้สิ่งเหล่านี้ในโครงการใหญ่ ๆ ดังนั้นคุณอาจต้องการทดลองใช้:
-
อย่างไรก็ตามฉันคิดว่ามันง่ายพอที่คุณจะลองดูด้วยตัวเอง ฉันทำแบบนี้เป็นการส่วนตัวเมื่อฉันต้องการทำเช่นนั้น คุณอาจสร้างห้องสมุดง่ายๆที่เหมาะกับความต้องการของคุณ
1. ดำเนินการเมธอด JS จาก Objective-C
นี่เป็นโค้ดเพียงบรรทัดเดียว
NSString *returnvalue = [webView stringByEvaluatingJavaScriptFromString:@"your javascript code string here"];
รายละเอียดเพิ่มเติมเกี่ยวกับการอย่างเป็นทางการเอกสาร UIWebView
2. ดำเนินการเมธอด Objective-C จาก JS
น่าเสียดายที่สิ่งนี้ซับซ้อนกว่าเล็กน้อยเนื่องจากไม่มีคุณสมบัติ windowScriptObject (และคลาส) เดียวกันกับที่มีอยู่ใน Mac OSX ทำให้สามารถสื่อสารระหว่างทั้งสองได้อย่างสมบูรณ์
อย่างไรก็ตามคุณสามารถเรียกใช้ URL ที่กำหนดเองด้วยจาวาสคริปต์เช่น:
window.location = yourscheme://callfunction/parameter1/parameter2?parameter3=value
และสกัดกั้นจาก Objective-C ด้วยสิ่งนี้:
- (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
}
}
สิ่งนี้ไม่สะอาดเท่าที่ควร (หรือโดยใช้ windowScriptObject) แต่ใช้งานได้
3. ฟังเหตุการณ์ JS ดั้งเดิมจาก Objective-C (เช่น DOM ready event)
จากคำอธิบายข้างต้นคุณจะเห็นว่าหากต้องการทำเช่นนั้นคุณต้องสร้างโค้ด JavaScript แนบกับเหตุการณ์ที่คุณต้องการตรวจสอบและเรียกการโทรที่ถูกต้องwindow.location
เพื่อให้ถูกดักฟัง
อีกครั้งไม่สะอาดเท่าที่ควร แต่ก็ใช้ได้