Tôi cần điền trước các trường văn bản trong một số UIWebView
và được cấp để hiểu rằng javascript
là cách tốt nhất để thực hiện việc này. Rất tiếc, tôi không biết gì về số javascript
và đã lúng túng trong vài giờ qua, không nhận được hư không.Điền trước các trường văn bản WebView
mới nhất nỗ lực bất thành:
- (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];
}
bất cứ ai có thể chỉ cho tôi đi đúng hướng?
-EDIT-
Tôi cũng đã thử cố gắng trì hoãn các cuộc gọi trong trường hợp trang đã không nạp đầy đủ và nếu tôi gọi cái gì đó như:
- (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');"]];
}
các cảnh báo xuất hiện nhưng lĩnh vực này với ID password_5
là Chưa được điên.
Các trường được đề cập được lồng trong một biểu mẫu. Không biết liệu điều đó có tạo nên sự khác biệt nào không?
-EDIT 2-
Tôi khá chắc chắn rằng các vấn đề có liên quan đến HTML/làm tổ trên các trang web mục tiêu như tôi chỉ cố gắng này trên một trang web khác và nó làm việc.
Các trang web mục tiêu được lồng như thế này:
<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>
Im không chắc chắn nếu nó sẽ giúp đỡ, nhưng không u mất tích '; 'sau'' testPW''? –
Có, cảm ơn - lỗi đánh máy. – Robert
Tôi vừa thử nghiệm mã của bạn (với phần bổ sung ';' tôi đã đề xuất trong bình luận trước) và mã JS của bạn hoạt động tốt cho tôi. Vì vậy, có thể kiểm tra mã HTML của bạn nếu OK của nó –