Tag: javascriptcore

从Objective-C引发exception返回到Javascript

JavascriptCore允许我们通过JSExport协议将我们的Objective-C类暴露给javascript。 比方说,在其中一个公开的Objective-C类的方法中,遇到了引发exception的情况。 有没有办法创build所述的exception,并提出这样的JavaScript代码可以处理它,因为它会处理一个正常的JavaScriptexception? 我试着做一个常规的[NSException raise…]并立即造成了崩溃。 我降级检测提出条件,将该条件传回到JavaScript,并让JavaScript做抛出?

运行JS代码以快速获取数据

我需要在CloudKit中获取CkAsset的url。 但是,迅速,苹果不允许我们取得直接的WebURL,它只下载资产,并给我们fileURL。 但是,使用JavaScript是可能的。 因此,我写了一个获取CkAsset WebURL的JS文件。 当我在浏览器中运行这个JavaScript文件。 我试图用下面的代码快速运行它,但我不能。 当我search有一个名为“stringByEvaluatingJavaScriptFromString”的函数,但我不知道如何运行它。 的index.html <meta charset="utf-8"> <title>TIL – Today I Learned</title> <script src="https://cdn.apple-cloudkit.com/ck/1/cloudkit.js" async></script> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.3.0/knockout-min.js"></script> <script type="text/javascript" src="TIL.js"></script> javascript文件: window.addEventListener('cloudkitloaded', function() { console.log("listening for cloudkitloaded"); CloudKit.configure({ containers: [{ // To use your own container, replace containerIdentifier and apiToken containerIdentifier: 'iCloud.com.emreonder.ogun-dalka-music', apiToken: '42ba168168dbf3a8c9562904ebf311864258f8dd3638a241d2372057ea0e8a55', environment: 'development' }] }); console.log("cloudkitloaded"); var […]

JavaScriptCore – 将函数作为parameter passing给ObjC

我有一个利用JavaScriptCore的UIWebView。 我试图从网页调用一个ObjC函数。 但是,该函数需要asynchronous调用,所以我传递了一个callback函数,当调用asynchronousObjC函数时调用。 这是我的理解,JS函数通过桥梁相当于NSBlock。 我现在的代码是: context[@"currentUserLocation"] = ^( void(^callback)(NSString* str) ) { NSLog(@"Starting Async Function"); //generic async function dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ NSLog(@"delay complete"); callback( @"return value" ); }); }; 我在做什么有什么根本性的错误? 从表面上看,ObjC似乎不知道在哪个上下文中运行callback函数。

WebThread JavaScriptCore崩溃 – 这个崩溃报告意味着什么

我需要帮助来理解testing用户的这个崩溃日志。 我没有在我的应用程序中编写任何与JavaScriptCore相关的代码。 我仍然不知道如何重现这次崩溃。 任何有关这个问题的见解都会对我find这个问题有所帮助。 谢谢, PS我的应用程序正在使用Admob中介。 我不知道这是否有一些关系。 Incident Identifier: 7B6EFFFF-4D55-48AE-8FE8-A55590405F0A CrashReporter Key: ef1ad783966254a93308221f30f17134c95879f7 Hardware Model: iPad5,3 Process: ???? [2325] Path: /private/var/mobile/Containers/Bundle/Application/16AE72E1-A8C8-45D9-955F-A6F96FCCE800/????.app/???? Identifier: ???? Version: 3.75.14 (3.75) Code Type: ARM-64 (Native) Parent Process: launchd [1] Date/Time: 2015-05-16 10:36:50.459 -0700 Launch Time: 2015-05-16 10:00:10.481 -0700 OS Version: iOS 8.3 (12F69) Report Version: 105 Exception Type: EXC_BAD_ACCESS (SIGSEGV) […]

我应该避免在全局队列中创buildJSContexts?

我刚刚从客户的设备上得到了一个崩溃日志,而且在这里崩溃了: dispatch_async(dispatch_get_global_queue(0, 0), ^{ JSContext *javaScriptContext = [[JSContext alloc] init]; 这里是崩溃日志: Thread 11 Crashed: 0 JavaScriptCore 0x31009cd6 WTFCrash + 54 1 JavaScriptCore 0x30e0edf6 WTF::OSAllocator::reserveAndCommit(unsigned long, WTF::OSAllocator::Usage, bool, bool, bool) + 166 2 JavaScriptCore 0x30e0ed2a WTF::OSAllocator::reserveUncommitted(unsigned long, WTF::OSAllocator::Usage, bool, bool, bool) + 14 3 JavaScriptCore 0x30e14736 JSC::JSStack::JSStack(JSC::VM&, unsigned long) + 74 4 JavaScriptCore 0x30e146d2 JSC::Interpreter::Interpreter(JSC::VM&) + […]

UIWebView的JavaScript失去对iOS的JSContext命名空间(对象)的引用

我一直在研究概念validation应用程序,该应用程序利用WebKit JavaScriptCore框架利用Objective C(iOS 7)和JavaScript之间的双向通信。 我终于能够按预期工作,但遇到了UIWebView失去了我通过JSContext创build的iOS对象的引用的情况。 该应用程序有点复杂,这里是基本的: 我正在iOS设备上运行一个Web服务器(CocoaHTTPServer) UIWebView最初加载远程URL,稍后redirect到localhost作为应用程序stream的一部分(认为OAuth) 应用程序托pipe的HTML页面(在本地主机上)具有应与我的iOS代码交谈的JavaScript 这是iOS端,我的ViewController的.h : #import <UIKit/UIKit.h> #import <JavaScriptCore/JavaScriptCore.h> // These methods will be exposed to JS @protocol DemoJSExports <JSExport> -(void)jsLog:(NSString*)msg; @end @interface Demo : UIViewController <UserInfoJSExports, UIWebViewDelegate> @property (nonatomic, readwrite, strong) JSContext *js; @property (strong, nonatomic) IBOutlet UIWebView *webView; @end 和ViewController的.m的相关部分: -(void)viewDidLoad { [super viewDidLoad]; // Retrieve and […]

访问UIWebView的JavaScriptCore引擎

我刚刚在iOS7中发现了一个新的框架:JavaScriptCore。 它看起来很棒,但我怎样才能访问UIWebView的运行时/上下文?

在ViewControllers的iOS 7中使用JavaScriptCore从JavaScript触发目标C方法

我正在加载一个url,其中有HTML和JavaScript函数调用下面的web视图。 现在我正在查看用户在webview中触摸提交button时应该调用viewController中的任何方法。 WebView应该加载url(webview委托)是一种方法,但有什么新的方式来获得知道,当javascript函数被webview调用应通知viewcontroller或触发视图控制器中的任何方法。 我不在寻找这个我们需要的解决scheme – (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{ NSLog(@"passed data from web view : %@",[[request URL] query]); if([[[request URL] query] isEqualToString:@"clickedOnLineNo"]) { //Do your action here } 我们必须从你的javascript方法导航到一个假的URL, window.location = "someLink://yourApp/form_Submitted:param1:param2:param3"; 点击一个button或您需要的操作。 但JavaScriptCore有没有新的可能性来实现这一点。