我正在使用ChildBrowser,可以在我的PhoneGap应用程序中显示外部网页。我的问题是我无法在子网页中添加标题/标题。有什么建议吗?
到目前为止我尝试了什么
而不是toolbar.addView(edittext);
我添加了
final TextView rowTextView = new TextView(ctx.getContext());
rowTextView.setText(myTitle);
toolbar.addView(rowTextView);
但看起来我还需要将myTitle变量传递给execute方法 所以在PluginResult内部执行()我可以使用像
这样的东西result = this.showWebPage(args.getString(0), args.optJSONObject(1), myTitle);
我可以为iOS添加相同的代码示例吗?
答案 0 :(得分: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代码,可以轻松地完成Google oAuth2。我绝对不需要工具栏,因为用户正在去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的更新版本。