我正在尝试将 JS 注入(inject) UIWebView。直到某个时候,一切都像魅力一样运作:
在 viewDidLoad
中,我将一个 HTML 按钮加载到 WebView:
NSString *loadedHTML = <input type='button' onclick='test();' value='test'/>;
[_webView loadHTMLString:loadedHTML baseURL:nil];
这样我就可以通过单击按钮来测试我的 JS 函数是否正常工作。在 webViewDidFinishLoad:webView
中,我注入(inject)了一个 JS 函数:
NSString *jsScript =
@"var test = function() {alert('not in class')};"
@"document.getElementsByTagName('head')[0].appendChild(test);";
[webView stringByEvaluatingJavaScriptFromString:jsScript];
这非常有效。
现在我需要创建一个类似的函数,但它必须在一个对象中。我尝试的是:
改变 HTML,所以按钮调用一个对象函数:
loadedHTML = <input type='button' onclick='myObject.test();' value='test'/>;
改变 JS,因此它在其中创建一个对象和一个函数:
jsScript =
@"var myObject = new function() {"
@"var test = function() {alert('not in class')};"
@"document.getElementsByTagName('head')[0].appendChild(myObject);";
@"}";
它什么都不做。我试图在 three different ways 中创建对象,将 myObject.test
附加到文档 - 没有任何帮助。我在这里做错了什么?
最佳答案
发生的事情是创建一个这样的 JS 对象:
var myObject = {
test: function() {alert('in class!')}
}
然后,调用 myObject.test()
函数即可。
关于javascript - iOS JS 类对象注入(inject) WebView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23089632/