stringByEvaluatingJavaScriptFromString不起作用

时间:2011-01-29 17:05:40

标签: cocoa macos webkit

这个表达似乎不起作用。它是Mac应用程序,而不是iPhone应用程序。

[[mainWebView mainFrame] stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.getElementById('username').value='%@';document.getElementById('password').value='%@';", [ebuddyidField value], [passwordField value]]];

2 个答案:

答案 0 :(得分:3)

您需要发送stringByEvaluatingJavaScriptFromString:消息to the WebView,而不是发送到主框架。

此外,假设ebuddyidFieldpasswordField是NSTextFields(后者可能是NSSecureTextField),它们不响应value消息。他们回复的最近的消息是objectValue,但您可能更想要stringValue

编译器应该已经为您提供了所有三个问题的警告。转到“构建结果”窗口并修复每个警告。然后turn some more on并修复它们。您的应用程序将更稳定,更强大,并且泄漏更少。

答案 1 :(得分:0)

那是因为WebFrame没有回复-stringByEvaluatingJavaScriptFromString:。这是iOS上的UIWebView方法,与Mac OS X上的WebKit无关。

请尝试使用[[webView windowScriptObject] evaluateWebScript:...]。但是,该方法的结果是id,其类型可能是也可能不是NSString

有关Mac OS X上WebKit中JavaScript交互的更多信息,请参阅WebScriptObject类文档。

修改:实际上,回过头来查看WebView文档,我发现它确实有-stringByEvaluatingJavaScriptFromString:方法。因此,请尝试将其发送到Web视图而不是Web框架。)