0

私はChildBrowserを使用しています。これは、PhoneGap アプリケーション内で外部 Web ページを表示するために正常に動作します。私の問題は、子 Web ページにタイトル/ヘッダーを追加できないことです。助言がありますか?

これまでに試したこと

toolbar.addView(edittext);私が追加した代わりに

final TextView rowTextView = new TextView(ctx.getContext()); 
rowTextView.setText(myTitle); 
toolbar.addView(rowTextView); 

しかし、PluginResult execute() 内で次のようなものを使用できるように、myTitle 変数を execute メソッドに渡す必要もあるようです。

result = this.showWebPage(args.getString(0), args.optJSONObject(1), myTitle);

iOS 用の同じコード サンプルを追加できますか?

4

1 に答える 1

2

ChildBrowserを「アップグレード」する必要があります。340行目のあたりに次のコードがありますwebview.setWebViewClient(client);。次のように置き換えます。

webview.setWebViewClient(new WebViewClient() {
  @Override
    public void onPageFinished(WebView view, String url) {
      webview.loadUrl("javascript:(function(){"+"var t=document.head.getElementsByTagName('title')[0];t.innerHTML="+myNewTitle+"})()");
    }
});  

showWebPage()を設定するには、のコードを読み取るオプションも微調整する必要がありますmyNewTitle。しかし、その後、あなたは行ってもいいはずです。

編集:

基本的に、私は、少なくとも私の使用では、おそらくあなたの使用では、現状のツールバーは必要ないと判断しました。もともと、私はChildBrowserを微調整して、完全なHTMLソースをJSコードに送り返すことで、GoogleoAuth2を簡単に実行できるようにしました。ユーザーはGoogleが望む場所に行くので、ツールバーは絶対に必要ありません。私はコードから何かをハックする必要がありました、そして元の作者は私が彼のコードでしたことに腹を立てることができました...これがチェックリストです:

import android.view.Gravity;
import android.util.TypedValue;
import android.graphics.Color;
import android.graphics.Typeface;

public class ChildBrowser extends Plugin {
  **public String zeTitle;**

//  private EditText edittext;
private TextView edittext;

のすべての参照をEditTextに変更する必要がありTextViewます。

result = this.showWebPage(args.getString(0), args.optJSONObject(1)**, args.getString(2)**);

.jsファイルも変更する必要があります。

public String showWebPage(final String url, JSONObject options**, String myNewTitle**) {
  if (options != null) {
    showLocationBar = options.optBoolean("showLocationBar", true);
  }
  **zeTitle=myNewTitle;**

関連するすべてのコードをコメントアウトしImageButtonます。

edittext = new TextView(ctx.getContext()); // insread of EditText

コメントアウトedittext.setOnKeyListener

// edittext.setText(url);
edittext.setText(zeTitle);
edittext.setTextSize(TypedValue.COMPLEX_UNIT_PX, 24);
edittext.setGravity(Gravity.CENTER);
edittext.setTextColor(Color.DKGRAY);
edittext.setTypeface(Typeface.DEFAULT_BOLD);

必要なものだけをツールバーに追加します。

// toolbar.addView(back);
// toolbar.addView(forward);
toolbar.addView(edittext);
// toolbar.addView(close);

ついに:

public class ChildBrowserClient extends WebViewClient {
// EditText edittext;
  TextView edittext;

/**
 * Constructor.
 * 
 * @param mContext
 * @param edittext 
 */
public ChildBrowserClient(TextView mEditText) {
//  this.edittext = mEditText;
}

JSコードの場合:

cb.showWebPage(YOUR_URL, {showLocationBar:true}, YOUR_TITLE);

あなたは行ってもいいはずです。GitHubで使用しているChildBrowserの更新バージョンを公開します。

于 2012-05-22T12:33:10.850 に答える