2013-08-09 3 views
5

मुझे UIWebView में टेक्स्ट फ़ील्ड को पूर्व-भरना होगा और यह समझने के लिए दिया गया है कि javascript इस बारे में जाने का सबसे अच्छा तरीका है। दुर्भाग्यवश मुझे javascript का कुछ भी पता नहीं है और पिछले कुछ घंटों के लिए झुका रहा है, कहीं भी नहीं।प्री-फिल वेबव्यू टेक्स्ट फ़ील्ड

नवीनतम कच्ची प्रयास:

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    // username field id = username_5 & pw field id = password_5 
    NSString *javascript = @"\ 
    var user = 'testUser';\ 
    var pw = 'testPW';\ 
    document.getElementById('username_5').value = user; \ 
    document.getElementById('password_5').value = pw; \ 
    ;"; 
    // Execute JS 
    [_emailWebView stringByEvaluatingJavaScriptFromString:javascript]; 
} 

किसी को भी सही दिशा में मुझे बात कर सकते हैं?

-EDIT-

मैं भी पूरी तरह से लोड नहीं कॉल मामले में पेज पड़ा देरी करने की कोशिश की कोशिश की और अगर मैं की तरह कुछ फोन:

- (void)webViewDidFinishLoad:(UIWebView *)wv 
{ 
    [NSObject cancelPreviousPerformRequestsWithTarget:self]; 
    [self performSelector:@selector(injectJavascript) withObject:nil afterDelay:1.0]; 
} 

- (void)injectJavascript 
{ 
    [self.emailWebView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.getElementById('password_5').value = 'testPW';"]]; 
    [self.emailWebView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"window.alert('test');"]]; 
} 

चेतावनी दिखाई देता है लेकिन आईडी के साथ क्षेत्र password_5 है नहीं भरा।

प्रश्न में फ़ील्ड एक रूप में घोंसला हैं। पता नहीं है कि इससे कोई फर्क पड़ता है?

-संपादित 2-

मैं बहुत यकीन है कि समस्या/HTML से संबंधित है लक्ष्य वेबसाइट पर घोंसले के रूप में मैं सिर्फ एक और साइट पर इस की कोशिश की और यह काम किया है।

लक्ष्य साइट इस तरह नीडिंत है:

<html> 
    <head> … </head> 
    <body onload="FinishLoad(1);hideJSWarn();"> 
     <div id="noJSWarn" class="cssSecurityWarning" style="display: none;"> … </div> 
     <table id="table_LoginPage_1" > … </table> 
     <table id="table_LoginPage_2" > … </table> 
     <blockquote> 
     <form id="frmLogin_4" onsubmit="return Login(1)" autocomplete="off" method="POST" action="login.cgi" name="frmLogin"> 
      <input id="tz_offset_5" type="hidden" name="tz_offset"></input> 
      <table id="table_LoginPage_3" > 
      <tbody> 
       <tr> … 
       <td valign="top"> 
        <table id="table_LoginPage_6" > 
        <tbody> 
         <tr> 
         <td> … </td> 
         <td> 
          <input id="username_5" type="text" size="20" name="username"></input> 
+1

इम यकीन नहीं अगर यह मदद मिलेगी कार्य करेगी, लेकिन उपयोग यू लापता नहीं कर रहे हैं ';' ' 'testPW'' के बाद? –

+0

हां, धन्यवाद - टाइपो। – Robert

+1

मैंने अभी आपके कोड का परीक्षण किया है (जोड़ा गया '; 'मैंने पिछली टिप्पणी में सुझाव दिया था) और आपका जेएस कोड मेरे लिए ठीक काम करता है। तो हो सकता है कि आपका एचटीएमएल कोड जांचें यदि यह ठीक है –

उत्तर

5

मैं उन्हें फ़ायरफ़ॉक्स में प्रकाश डाला और inspect element का चयन करके तत्व आईडी प्राप्त किया था: यह कोड दिखाई देंगे की तरह है। में

NSString *body = [self.emailWebView stringByEvaluatingJavaScriptFromString: 
        @"document.getElementsByTagName('body')[0].outerHTML"];    
NSLog(@"%@", body); 

इन आईडी (जो जाहिरा तौर पर क्या पृष्ठ पर नेविगेट करने के लिए इस्तेमाल किया गया था पर निर्भर भिन्न हो) Plugging::

[self.emailWebView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.getElementById('username').value = '%@';", user]]; 
[self.emailWebView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.getElementById('password').value = '%@';", pw]]; 
[self.emailWebView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.getElementById('input_LoginPage-ipad_1').click();"]]; 

यह हल बाहर कर देता है इस के साथ वापस आ उन लोगों के लिए भिन्न आईडी देता है।

आपकी सभी मदद लोगों के लिए धन्यवाद।

+0

कृपया इसे http://stackoverflow.com/questions/37644551/auto-fill-forms-in-webview-by-javascript-android देखें। इसे आपकी मदद की ज़रूरत है। –

4

आप एक NSString अंदर जावास्क्रिप्ट कोड डाल करने के लिए और फिर stringByEvaluatingJavaScriptFromString साथ अमल किया है।

[self.webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.getElementById('email').value = '%@'", email]]; 
[self.webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.getElementById('pass').value = '%@'", password]]; 
+0

धन्यवाद। मैं इसे आज़मा दूंगा। – Robert

+0

एनपी। अगर यह आपकी मदद करता है तो मुझे बताएं। –

+0

अभी भी कोई खुशी नहीं है। एक सहयोगी फ़ील्ड को 'सी #' स्क्रिप्ट के माध्यम से प्रीफ़िल करने में कामयाब रहा लेकिन वही 'जावास्क्रिप्ट' उद्देश्य-सी' से काम नहीं कर रहा है। – Robert

1

इस संहिता यह

view.loadUrl("javascript:(function() { " 
    + " document.getElementById('login').value = '" + emailAdress+ "';" 
    + " document.getElementById('login').readOnly='true'" 
    + "})();"); 
संबंधित मुद्दे