スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

WebViewで表示した他人様のページのフォームに値をつっこむ

androidで荷物の追跡サービスのアプリを作ろうと思いましたが、
他人のふんどしを盗む(スクレイピング)といった行為が嫌いなので、
ページを表示して、伝票番号を初期表示してやるだけ(んで、保存できるようにする)
ってのを想定していました。


で、実際のところ、類似アプリがあってやりたいことがほとんどできるので開発は未着手。
(独自サーバ経由しているっぽいのが気になるといえば気になるので再開しないとは限りませんが)


ただ、ここで気になったのが、外部サイト(手を入れられない)に対して、
アプリ側から初期値を投入できるのか?というところ。
よくイベントをフックしたり、javascriptからアプリのコードを呼び出したりとかいう例はあるんですが、
そもそも、他人様のページに対して勝手なscriptの実行が出来るのか?
というのは見かけたことないな・・・
ということで軽く調べて試してみました。


結果としては出来たんですけどね。(読み込み時に初期値をFormにつっこむって事レベルですが)


うすうす気づかれるかもしれませんが、ブックマークレットなんかと同じ感じで話は進みます。
まずは基本となるページを読み込みます。
 
final WebView webView = (WebView) findViewById(R.id.web);
webView.getSettings().setJavaScriptEnabled(true);
mClient = getWebViewClient(which, mCode);//WebViewクライアントを取得
webView.setWebViewClient(mClient);
String url = "http://~~~~"
webView.loadUrl(url);
webView.requestFocus();

WebViewクライアントでは
ページ読み込み完了イベントで、scriptをloadさせます。
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
mParent.setProgressBarIndeterminateVisibility(false);
String script = "javascript:document.forms['trackingForm'].inputDenpyo.value='abc';";
view.loadUrl(script);
}

とすると無事trackingFormというフォームのinputDenpyoというテキストボックスに初期値としてabcが入ってくれたりします。
関連記事

コメントの投稿

非公開コメント

スポンサードリンク
アプリ一覧
最新記事
最新コメント
最新トラックバック
検索フォーム
月別アーカイブ
カテゴリ
RSSリンクの表示
リンク
QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。