2010-11-16 32 views
5

Tôi đã thấy cách chuyển một biến Objective-C sang JavaScript ngay tại đây, passing objective c variable to javascript in ios, nhưng làm cách nào để chuyển một biến từ JavaScript sang Objective-C khi tôi đang sử dụng một cái gì đó như thế này :Chuyển Biến Javascript thành Mục tiêu-C

[webView stringByEvaluatingJavaScriptFromString:@"var elems = document.body.getElementsByTagName(\"u\");" "passThisVarToObjC = elems.length;"

Trả lời

12

Vâng, đây là những gì chúng ta gọi là stringly gõ.

Bởi vì kiểu trả về của stringByEvaluatingJavaScriptFromString:NSString *, bạn sẽ có cần phải dính vào sử dụng một chuỗi hoặc ép buộc các giá trị vào một số khác (đọc: có thể sử dụng nhiều) gõ.

Nhưng dù sao, stringByEvaluatingJavaScriptFromString: sẽ trả lại giá trị của biến JavaScript cho bạn mà không gặp sự cố.

Cách này được thực hiện là thông qua việc sử dụng một chức năng ẩn danh (mà trong trường hợp này là tự thực hiện):

NSString *numOfElements = [webView stringByEvaluatingJavaScriptFromString:@"(function() {var elems = document.body.getElementsByTagName(\"u\"); return elems.length;})();"]; 

//do normal stuff with numOfElements like cast to an int or something cool like that. 
+0

Ông có thể vui lòng giúp tôi về vấn đề này quá http://stackoverflow.com/ câu hỏi/10793698/cách thực hiện-hình ảnh-bản đồ-có thể nhấp-sử dụng-uiwebview-in-iphone –

3

bạn cần có một tuyên bố trở lại trong javascript của bạn. Có thể có những cách tốt hơn để làm điều đó nhưng sau javascript làm việc cho tôi:

NSString* findLink = @"function f() {var x = document.getElementsByTagName('a'); 
if(x.length > 0) { return x[0].getAttribute('href');}; return null;} f(); "; 

Hãy thử sử dụng mã này:

[webView stringByEvaluatingJavaScriptFromString:@"function f() {var elems = 
document.body.getElementsByTagName(\"u\"); return elems.length;}f();"]; 
Các vấn đề liên quan