UIWebView
にテキストフィールドをあらかじめ入力する必要があります。javascript
がこの問題を解決する最良の方法であることを理解してください。残念ながら、私はjavascript
の何も知らないし、最後の数時間、どこにもいなくなってしまった。WebViewテキストフィールドの事前入力
最新しくじった試み:
- (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');"]];
}
を警告が表示されますが、ID password_5
を持つフィールドがあります満たされていない。
問題のフィールドはフォーム内にネストされています。違いがあれば分かりませんか?
-EDIT 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>
イムではなく動作しますが、uが '欠落していない;' ' 'testPW''後? –
はい、ありがとう - タイプミス。 – Robert
私はちょうどあなたのコードをテストしました(以前のコメントで提案された ';'が追加されています)、あなたのJSコードはうまく動作します。だから、おそらくあなたのHTMLコードを確認してください。OK –