سؤال

انا استخدم متصفح الطفل, ، والذي يعمل بشكل جيد لعرض صفحات الويب الخارجية داخل تطبيق PhoneGap الخاص بي.مشكلتي هي أنني غير قادر على إضافة عنوان/رأس في صفحات الويب الفرعية.أي اقتراحات؟

ما حاولت حتى الآن

بدلاً من toolbar.addView(edittext); أضفت

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

لكن يبدو أنني بحاجة أيضًا إلى تمرير متغير mytitle لتنفيذ طريقة بحيث يتم تنفيذ المكون الإضافي ()

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

هل يمكنني إضافة نفس نموذج التعليمات البرمجية الخاص بك لنظام iOS؟

هل كانت مفيدة؟

المحلول

سيكون عليك "ترقية" 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 حتى أتمكن من إجراء Google oAuth2 دون عناء، عن طريق إعادة مصدر HTML الكامل مرة أخرى إلى كود JS.أنا بالتأكيد لا أحتاج إلى شريط أدوات، حيث أن المستخدم سيذهب إلى المكان الذي يريده جوجل.كان علي أن أخترق بعض الأشياء من الكود، ومن الممكن أن يكون المؤلف الأصلي غاضبًا مما فعلته بشفرته...فيما يلي قائمة مرجعية:

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);

يجب أن تكون على ما يرام.سأطرح نسخة محدثة من ChildBrowser الذي أستخدمه على GitHub.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top