UIWebView Expose Objective C to JavaScript - ios

How would I expose an Objective-C method within JavaScript when using the iPhone SDK when using the UIWebView?
Any help would be appreciated!

The best way to do this would be through a custom link, and then use the UIWebView delegate method -webView:shouldStartLoadWithRequest:navigationType: to trap requests. When you see a request come through with your link in it, you know your action has been triggered.

There is an example application in the QuickConnectiPhone framework that shows you how to do this.
QuickConnectiPhone also gives you a JavaScript function called 'makeCall'. You pass it a command and an array of parameters and it will pass them to the Objective-C side of your app for handling. You can then make your function call.
You can find it here on Sourceforge.

To see an example of this check out the PhoneGap source code from Github:
http://github.com/sintaxi/phonegap/tree/master/iphone/Classes/GlassAppDelegate.m

Related

electron webFrame.executeJavaScriptInIsolatedWorld is not a function

I am trying to use electron's webFrame.executeJavaScriptInIsolatedWorld method but I get an error saying its not a function. I am trying to use this in a preload script of a webview.
import { webFrame } from 'electron'
webframe.executeJavaScriptInIsolatedWorld(123 , [{code: 'alert("hello")'}])
When I console log the webframe object and check its prototypes then
executeJavaScriptInIsolatedWorld is not present there so I understand why I am getting the error. But the electron docs (here) mentions that this method is available. I am a little confused by this. Am I using it in the wrong location? Can this not be used inside a webview's preload?
You are reading docs for 2.0.2 version of electron. 1.7.11 you use https://github.com/electron/electron/blob/v1.7.11/docs/api/web-frame.md doesn't have those interface.

Opentok not calling the controller methods (sessiondidconnect) in ios

I am trying to implement an OpenTok application using codename one. I already started with android and had pretty much everything working. I use a native interface to import the OpenTok library.
Now I am trying to implement the ios side. I have a class acting like the view controller :
#interface be_lsit_opentok_iosTestHelper <OTSessionDelegate, OTPublisherDelegate> : NSObject
This class implements all the needed methods for the session connection : https://tokbox.com/developer/tutorials/ios/basic-video-chat/ (step 4).
My class implementing the native interface handles the initialization of the session with the api_key... and then calls the session's "connectWithToken".
Once this is done I can notice using the OpenTok Playground that the connection works but I do also notice that opentok does not send a message to call the method "sessionDidConnect" which is a problem.
I do not understand why the call is not done and what sould I do?
I also tryed to call the method myself using a thread call the method only when the connection to the session is made and that its status is "OTSessionConnectionStatusConnected" and this worked.
I'm guessing here since I didn't do this. You implemented the viewDidLoad in your own code instead of the Codename One view did load.
You can inject code into the Codename One viewDidLoad method using the build hint ios.viewDidLoad. So a build hint like:
ios.viewDidLoad=[self connectToAnOpenTokSession];
Should work but you would also need to add an import for the API into our code. Unfortunately I couldn't find a suitable build hint to define that so I added one ios.viewDidLoadInclude which I will add tomorrow to the build will allow you to define an import or include statement required by the statement above.

what is the iOS equivalent of mixpanel.get_property() in javascript

I am trying to increment a super property in mixpanel iOS (OBJC). I am following this blog to do so:
https://blog.mixpanel.com/2015/01/29/incremental-super-properties/
As you can see, it does what I want in javascript using get_property method of mixpanel. But I need to do the same thing on iOS. I can't seem to figure out what is the equivalent of mixpanel.get_property() on iOS.
https://mixpanel.github.io/mixpanel-iphone/Classes/Mixpanel/index.html#//apple_ref/occ/instm/Mixpanel/currentSuperProperties
The above link is equivalent to
https://mixpanel.com/help/reference/javascript-full-api-reference#mixpanel.get_property
Both functions return super properties
Hope this helps,
Cheers Analytics ML.

Using javascript library in Dart

I try to use JavaScript library visjs.org in Dart. I prepared ‘adapter’ code according examples on Dart site pub.dartlang.org/packages/js and github.com/google/chartjs.dart/blob/master/lib/chartjs.dart.
Also according basic use case example from http://visjs.org I prepare client dart code.
While code compiles without any errors and warnings nothing happens in browser, expected to see graph-tree.
What I did wrong or miss to do?
https://gist.github.com/EdSv/e274a4d12ad3491c383fb4fe76ee671e
The attribute #anonymous is meant to be used when the object you're describing doesn't actually exist in the JS library you're binding, and is only used as a plain old data object. By adding it to all of your objects, my guess is that dart is never attempting to create anything from the visjs library.
Try removing the #anonymous from your Network class and see if that has an effect. You will likely also need to make these abstract classes as well.

Automatic Typing Textarea/input/form in JavaScript

I've been searching for a way to make a textarea type inside of itself. Unfortunately, even with some google searching, I still don't have a clue? Do you guys know where to start with this?
http://lmgtfy |dot| com is an example, but I'm not sure if they use some other technique...
The lmgtfy people are simply using javascript to change the value of the input. Here is a simple jsfiddle showing the same thing:
http://jsfiddle.net/Caut6/1/
LMGTFY uses javascript. If you visit the site using chrome or some other browser with a debugger, you should be able to pause javascript execution and check out how they do it, then roll or copy your own version.
In Chrome, the pause button is under the Scripts area. Their bundle.js files appears to host the JS you are looking for, it is around 1000 lines of code, but you should be able to see the few functions you need to borrow their implementation.
Hope this helps.

Resources