0

我正在使用ChildBrowser,它可以很好地在我的 PhoneGap 应用程序中显示外部网页。我的问题是我无法在子网页中添加标题/标题。有什么建议么?

到目前为止我尝试了什么

而不是toolbar.addView(edittext);我添加

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

但看起来我还需要将 myTitle 变量传递给执行方法,以便在 PluginResult 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()to set myNewTitle。但在那之后,你应该很高兴。

编辑:

基本上我决定——至少为了我的使用,也可能是你的——不需要工具栏。最初,我调整了 ChildBrowser,以便我可以通过将完整的 HTML 源发送回 JS 代码来轻松地执行 Google oAuth2。我绝对不需要工具栏,因为用户会去谷歌想要它去的地方。我不得不从代码中破解一些东西,而原作者可能会对我对他的代码所做的事情感到生气......这是一个清单:

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 回答