私はAndroid用のworklightフレームワークを使用してハイブリッドアプリとしてブラウザを作成することに取り組んでいます。アドレスバーを、ユーザー入力を受け取り、引数をWebビューに渡してページをロードする入力要素として実装しました。ただし、その逆の方法がわかりません。ユーザーがWebビューのリンクをクリックするたびに、アドレスバーを新しい場所に変更する必要があります。
質問する
688 次
2 に答える
1
開いているネイティブページを実装していますか?もしそうなら、ChildBrowserを見てください、それは基本的に同じことをします。これには、アドレスバーとして使用されているTextViewがあります。あなたはそれを使うことを決めるかもしれません、あるいはあなたがそれから欲しい小片を手に入れるかもしれません。とにかく、私はあなたがこのようなことをしたいことをイメージします。WebViewClientでonLoadResourceをオーバーライドすることにより、URLを取得してTextBoxを変更できるようになります。
以下のコメントに応えて:wlEnvInit()関数の環境のメインjsファイル内:
function wlEnvInit(){
wlCommonInit();
// Environment initialization code goes here
document.onclick=manageLinks;
}
次に、この関数でURLを取得し、入力要素のテキストを設定します。
function manageLinks(event) {
var link = event.target;
//go up the family tree until we find the A tag
while (link && link.tagName != 'A') {
link = link.parentNode;
}
if (link) {
var url = link.href;
console.log("url = " + url);
//You can decide if you want to separate external or
//internal links, depending on your application
var linkIsExternal = ((url.indexOf('http://') == 0) || (url.indexOf('https://') == 0));
if (linkIsExternal) {
myInput.setText(url);
return false;
}
}
return true;
}
WebView内、プラグイン内で、次のようにURLをインターセプトします。
webview.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
//use this area to set your input. Depending on how you
//implemented your plugin, you may need to return this value
//back to your main activity
Toast.makeText(cordova.getActivity(), "Loading: " + url, Toast.LENGTH_LONG).show();
}
});
于 2013-01-30T12:57:09.177 に答える
0
のhrefからURLを取得して入力変数に割り当て、get / postを実行しようとしましたか?SDKでそれが可能であることを私は知っています、私はそれがフレームワークでより難しくなることはないと思います。パーサーなどを使用して、ハイパーリンクを配列に格納できます。
擬似コードの例:
When_hiperlink_clicked: //could be like a listener (search about it)
url = hiperlink.getURL("myHiperlink");
myinput.setText(url);
execute_input_bar_action();
コードなどがないとわかりにくいです、ごめんなさい。
于 2013-01-30T10:00:53.427 に答える