Có thể chạy một số mã javascript (có lẽ là NSString
làm đầu vào) mà không cần sử dụng UIWebView
? Tôi muốn chạy mã này trong một thread riêng biệt để UIWebView là không thể và tôi không thực sự muốn render bất cứ điều gì, chỉ cần lấy lại kết quả.Chạy javascript mà không có UIWebView có thể?
Trả lời
tôi đã không cố gắng này, nhưng đây là một ý tưởng:
Viết mã để phân bổ một trống UIWebView
nhưng không thêm nó như là một subview bất cứ nơi nào, và chỉ cần gọi trực tiếp - (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script
trên javascript của bạn.
Sau đó sử dụng NSOperation
để chạy song song.
Bất kỳ lý do nào có thể không phù hợp với bạn? Tôi nghĩ rằng nó sẽ tránh hiển thị bất cứ điều gì cho UIWebView
.
Là một lưu ý phụ, tôi không thể nghĩ ra bất cứ điều gì bạn có thể làm trong javascript mà bạn không thể làm nhanh hơn trực tiếp trong Mục tiêu-C. Ngoại trừ có thể phân tích cú pháp javascript mà bạn nhận được từ bên ngoài, có thể được coi là không có của Apple, tùy thuộc vào chi tiết.
Đoán mục tiêu của bạn: Nếu bạn muốn phân tích cú pháp trả lời của máy chủ JSON, tôi khuyên bạn nên json-framework library hosted on google code. Nó có một giao diện đẹp, và thật dễ dàng để tìm hiểu và tích hợp.
Tôi nghĩ rằng bài viết của Parmanoir Taming JavascriptCore within and without WebView có thể cung cấp cho bạn một số lời khuyên.
JavaScriptCore không được hiển thị trong SDK (WebKit là một khung công tác riêng) nhưng liên kết rất thú vị, cảm ơn! – user130444
self.timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(getResults:) userInfo:nil repeats:YES];
-(void)getResults
{
NSString *value = [self.webView stringByEvaluatingJavaScriptFromString:@"javascript"];
}
Bất kỳ lý do nào bạn không thể làm điều gì đó như thế này. Không nên là lớn của một chi phí trên chủ đề chính của bạn.
- 1. Có thể Indy chạy Javascript không?
- 2. Capybara: Thử nghiệm JavaScript chạy mà không có lỗi
- 3. Có thể tương tác với UIWebView mà không cần chạm không?
- 4. Cách chạy tệp HTML + javascript chạy trên UIWebView. .?
- 5. Có thể chạy lệnh Rails đơn trên Heroku mà không có 'bảng điều khiển chạy heroku'?
- 6. Có thể chạy các kịch bản lệnh Node.js mà không cần gọi `nút` không?
- 7. Có thể chạy tập lệnh Selenium mà không cần chạy máy chủ X không?
- 8. Chạy JavaScript trong UIWebView trước khi bất kỳ JavaScript nào khác chạy
- 9. Có thể chạy Hadoop trong hoạt động phân tán giả mà không có HDFS không?
- 10. Biến mà không có $, nó có thể là có thể?
- 11. Javascript Crashing UIWebview
- 12. UIwebview không có bộ nhớ cache
- 13. HTML được thêm vào có chứa javascript không chạy, làm cách nào tôi có thể chạy nó?
- 14. Javascript có thể được Bootstrapped không?
- 15. Có thể chạy trò chơi XNA mà không cần .NET hoặc XNA không?
- 16. Có thể chạy ứng dụng Adobe AIR mà không cần cài đặt không?
- 17. Java Applet chạy mà không có phương pháp chính?
- 18. Có thể chạy nô lệ Hudson không?
- 19. Không thể nhập module mà có
- 20. lỗi Phát hiện JavaScript trong một UIWebView
- 21. Tại sao hàm javascript này chạy mà không bị gọi?
- 22. Có thể dừng javascript bằng Firebug mà không cần sử dụng điểm ngắt không?
- 23. Có thể tạo một thể hiện của một lớp mà không cần chạy bất kỳ mã nào từ lớp không? (không có ctor, không có khởi tạo trường)
- 24. Chạy Visual Studio mà không có quyền quản trị
- 25. Chạy selen với firefox mà không có màn hình
- 26. Calling javascript sử dụng UIWebView
- 27. chức năng javascript đang chạy mà không bị gọi là
- 28. Có thể chạy lệnh maven không?
- 29. Hadoop có thể chạy trên Nginx không?
- 30. Mực có thể chạy sau nginx không?
Điều này dường như không hoạt động, đối với mọi phương thức UIWebView tôi cố gọi tôi nhận "bool _WebTryThreadLock (bool), 0xf42930: Đã cố gắng lấy khóa web từ một chủ đề khác với chuỗi chính hoặc chuỗi web. Có thể là kết quả của việc gọi đến UIKit từ một chủ đề thứ cấp. Đang hiện tại ... " Vì lý do của tôi, tôi chủ yếu thử nghiệm :) – user130444
Trừ khi được ghi lại một cách rõ ràng, không an toàn để gọi bất kỳ phương thức nào khác ngoài việc giữ lại * một đối tượng UIKit. Vì vậy, tôi sẽ không mong đợi điều này để làm việc. –
* phát hành kỹ thuật là an toàn chủ đề bởi chính nó, nhưng nếu bạn là người cuối cùng phát hành một đối tượng, nó có thể gây ra dealloc được chạy trên thread của bạn, mà không phải lúc nào cũng an toàn. –