javascript - iOS JS 类对象注入(inject) WebView

标签 javascript ios uiwebview

我正在尝试将 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/

相关文章:

javascript - html 和 javascript 中相同的 id 具有不同的类名

javascript - 检测 safari 并停止脚本

ios - 停止从 textView 中获取文本

javascript - JS分号去掉 'Uncaught SyntaxError: Unexpected identifier'错误为什么?

ios - 如何像 Safari 一样向 iOS 共享表添加额外选项

ios - 在 Swift 3 中显示 Facebook 事件

swift - 无法使用列表类型 NSURL 调用加载数据...正在加载本地 Web View 内容

javascript - 从当前 UIWebview 读取 html

javascript - 为什么 0 和 null 用等于运算符表示 true 和 false?

javascript - 如何在 angularJs 中将参数传递给工厂?