sickpuma
sickpuma

Reputation:

Running JavaScript in a UIWebView before any other JavaScript is run

I have a UIWebView component that is going to load a webpage which might contain JavaScript. I want to run some JavaScript of my own before any JavaScript on the loaded webpage runs. I know I can use [myWebView stringByEvaulatingJavaScriptFromString:] on the webViewDidFinishLoad: delegate of the UIWebView, however this will only run my JavaScript after the JavaScript on the webpage is run.

Is the only solution to inject my JavaScript into the source code of the webpage? For example, I would put it immediately after the <head> tag to insure it is the first JavaScript that is run.

Upvotes: 13

Views: 5080

Answers (2)

Ian McGraw
Ian McGraw

Reputation: 571

I would like an answer to this question as well. I can get it to work for the initial loading of the page by putting [myWebView stringByEvaluatingJavaScriptFromString: js] inside webViewDidStartLoad. On refresh, however, it does not appear to work.

Edit: I found this work-around (similar to the suggestion in your question.) Not sure how robust it is. http://www.stevesaxon.me/posts/2011/window-external-notify-in-ios-uiwebview/

Upvotes: 5

Elzo Valugi
Elzo Valugi

Reputation: 27876

Check this post about JS execution order. There is another tutorial here for the same issue. If you have a problem with a specific piece of code add it here in a detailed example and will see what it can be done.

Upvotes: 1

Related Questions