2011-01-29 66 views
2

該表達式似乎不起作用。這是與Mac應用程序,而不是iPhone應用程序。stringByEvaluatingJavaScriptFromString無法正常工作

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

回答

3

您需要發送您的stringByEvaluatingJavaScriptFromString:消息to the WebView,而不是其主框架。

此外,假設ebuddyidFieldpasswordField是NSTextFields(後者可能是NSSecureTextField),它們不響應value消息。他們確實迴應的最接近的消息是objectValue,儘管您更可能想要stringValue

編譯器應該給你所有三個問題的警告。轉到「生成結果」窗口並修復每個警告。然後turn some more on並修復這些。您的應用程序將更穩定,更強大,並且泄漏更少。

0

這是因爲WebFrame不響應-stringByEvaluatingJavaScriptFromString:。這是iOS上的UIWebView的一種方法,並且與Mac OS X上的WebKit無關。

嘗試使用[[webView windowScriptObject] evaluateWebScript:...]代替。然而,該方法的結果是id,其類型可能不是NSString

WebScriptObject類文檔上的JavaScript交互WebKit的Mac OS X上的詳細信息

編輯:其實,回去和看WebView文檔,我看到它確實有一個-stringByEvaluatingJavaScriptFromString:方法。因此,請嘗試將其發送到網頁瀏覽而不是網頁框。)

+0

它說'沒有-evaluateWebScript:找到方法'。這是我的代碼:\t [[mainWebView windowScriptObject] evaluateWebScript:[的NSString stringWithFormat:@「的document.getElementById( '用戶名')值= '%@';的document.getElementById( '密碼')值= '%@'。 ;「,[ebuddyidField value],[passwordField value]]]; – icant 2011-01-30 09:38:49

+0

你有沒有`#import `? – 2011-01-30 09:43:07