Reputation:
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
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
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