জাভাস্ক্রিপ্ট সতর্কতা অ্যান্ড্রয়েড ওয়েবভিউতে কাজ করছে না


91

আমার অ্যাপ্লিকেশনটিতে আমি ব্যবহার করছি WebViewএবং এটিতে আমি JavaScript alert( )পদ্ধতিটি ব্যবহার করছি তবে এটি কাজ করছে না, কোনও পপ-আপ প্রদর্শিত হবে না।

আমার প্রকাশিত ফাইলটিতে আমি যুক্ত করেছি

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

এবং ক্রিয়াকলাপের ফাইলে আমি যুক্ত করেছি

mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl("file:///android_asset/demo.html");

লেআউট এক্সএমএল ফাইলটিতে আমি যুক্ত করেছি

<WebView 
    android:id="@+id/webview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
/>

কোন খেই কিভাবে পূর্ণ সক্ষম করতে JavaScriptমধ্যে WebView?


হালনাগাদ

ধন্যবাদ চিহ্নিত পদ্ধতি ফাইলটি বর্তমানে কাজ করছে :)।
alert()html

এখন দুটি বিষয় রয়েছে WebView:
1: আমি <textarea>যে html ফাইলটি লোড করছি তাতে একটি ব্যবহার করছি এবং তাতে WebViewহিন্দি ভাষার ফন্ট লিখতে চেষ্টা করছি, কিন্তু যখন আমি হিন্দি পাঠ্য লেখার চেষ্টা করি এটি প্রতীক হিসাবে প্রদর্শিত হয় (যেমন আয়তক্ষেত্রের প্রতীকগুলি [])।

আমি যখন ডেস্কটপে ফায়ারফক্স ব্রাউজারে একই কাজ করি এটি ঠিকঠাক কাজ করে। কোন খেই কিভাবে একাধিক ভাষার জন্য সমর্থন দিতে textareaসালে WebView?

2: আমি যখন ক্লিক জমা দিচ্ছি alert()এবং অন্য জাভা স্ক্রিপ্টে পদ্ধতিতে পাঠ্যের মানটি খোলার চেষ্টা করছে যা এটি কাজ করে না, তার অর্থ কি এটি WebChromeClient কেবলমাত্র বর্তমান লোডড এইচটিএমএল পৃষ্ঠার জন্য প্রযোজ্য এবং javascriptsসেই পৃষ্ঠা থেকে কল না করে ?


6
এটি "জাভাস্ক্রিপ্ট", "জাভা স্ক্রিপ্ট", "জাভা স্ক্রিপ্ট", বা "জাভা স্ক্রিপ্ট" নয় (এগুলি সবই আপনার মূল প্রশ্নে উপস্থিত হয়েছিল)। আমি আপনার জন্য এটি সংশোধন করেছি।
টিজে ক্রাউডার

4
@ টিজে ক্রাউডার আমি বলার উদ্যোগ নিয়েছিলাম যে এটি জাভাস্ক্রিপ্ট বলা উচিত ।
ক্রিস সেলবেক

7
@ ক্রিস সেলবেক: নাহ। :-) "জাভাস্ক্রিপ্ট" হ'ল ওরাকলের একটি নিবন্ধিত ট্রেডমার্ক (গেটগুলি এবং একিভিশন পছন্দ করা), এবং তাদের প্রয়োগের জন্য মজিলা দ্বারা (অনুমতি সহ) ব্যবহৃত হয় । উভয় ক্ষেত্রেই, সঙ্গে রাজধানী এস যে নাম মাত্র আদর্শ ফর্ম আছে। ভাষার অন্য নাম অবশ্যই ECMAScript (বা ES), তবে ES5 সম্পর্কে কথা বলার ব্যতীত কেউই সত্যিই এটিকে ব্যবহার করে না ।
টিজে ক্রাউডার

উত্তর:


89

এই লিঙ্কটি এবং শেষ মন্তব্যটি পরীক্ষা করে দেখুন , আপনাকে WebChromeClientনিজের উদ্দেশ্যে ব্যবহার করতে হবে ।


8
ধন্যবাদ! ওয়েবভিউ.সেটওয়েব ক্রোমক্লিয়েন্ট (নতুন ওয়েবক্রোমক্লিয়েন্ট () {@ ওভাররাইড পাবলিক বুলিয়ান onJsAlert (ওয়েবভিউ ভিউ, স্ট্রিং ইউআরএল, স্ট্রিং মেসেজ, জেআরসাল্ট রেজাল্ট) super সুপার.অনজেএসআরলেট (দেখুন, ইউআরএল, বার্তা, ফলাফল);}});
nurnachman

আপনার মন্তব্যটি আমাকে সাহায্য করেছে .. নিখিলের উত্তর নীচে যেমন আছে।
বামসী চাল্লা

কবজির মতো কাজ করে। তবে তারপরে .... ওয়েবক্লিমেন্টের কি ওয়েবক্রোমক্লিয়েন্টের চেয়ে কোনও সুবিধা আছে।
জোশ

4
এটি একটি মূ ?় প্রশ্ন হতে পারে তবে যাইহোক: একই প্যারামগুলির সাহায্যে কেবল একটি সুপারের পদ্ধতিটি কল করার জন্য কেন কোনও পদ্ধতি ওভাররাইড করা হয়?
দিমিত্রি অ্যান্ড্রিভস্কি

4
যুক্ত করতে ভুলবেন নাwebview.getSettings().setJavaScriptEnabled(true);
জেমশিট ইস্কেনডেরভ

120

অন্যরা ইঙ্গিত হিসাবে, alert()কাজ করতে পেতে WebChromeClient সেট করা প্রয়োজন । এটি কেবলমাত্র ডিফল্ট ওয়েবক্রোমক্লিয়েন্ট () সেট করতে যথেষ্ট:

mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebChromeClient(new WebChromeClient());

নীচের সমস্ত মন্তব্যের জন্য ধন্যবাদ। জন স্মিথ সহ যিনি ইঙ্গিত করেছিলেন যে আপনার জাভাস্ক্রিপ্ট সক্ষম করতে হবে।


হ্যাঁ তবে বেশিরভাগ সময় আপনি ওয়েব ক্রোমক্লিনেন্টের ইভেন্টগুলির সাথে টুইট করতে চান তাই ...
রাদু

10
অবশেষে আমি mWebView.getSettings().setJavaScriptEnabled(true);লাইনের আগে যুক্ত করে এটি কাজ করতে সক্ষম হয়েছি mWebView.setWebChromeClient(new WebChromeClient());
জন স্মিথ

4
যুক্ত করতে ভুলবেন নাwebview.getSettings().setJavaScriptEnabled(true);
জেমশিট ইস্কেনডেরভ

22
webView.setWebChromeClient(new WebChromeClient() {
    @Override
    public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
        return super.onJsAlert(view, url, message, result);
    }
});

এটি দুর্দান্ত কাজ করে, তবে যখন আমি promptজাভাস্ক্রিপ্ট থেকে ফোন করি , তখন প্রম্পট পাঠ্য প্রদর্শন না করে এটিতে বলা হয়, "https: // ... এর পৃষ্ঠাটি বলে:" অ্যাপটিতে এমবেড হওয়া ওয়েবভিউয়ের নিমজ্জনকে পুরোপুরি ভাঙা
মাইকেল

5

নিম্নলিখিত কোডটি কাজ করবে:

private WebView mWebView;
final Activity activity = this;

// private Button b;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mWebView = (WebView) findViewById(R.id.webview);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.getSettings().setDomStorageEnabled(true);
    mWebView.setWebChromeClient(new WebChromeClient() {
        public void onProgressChanged(WebView view, int progress) {
            activity.setProgress(progress * 1000);
        }
    });

    mWebView.loadUrl("file:///android_asset/raw/NewFile1.html");
}

0

আপনি এটি দিয়ে চেষ্টা করতে পারেন, এটি আমার পক্ষে কাজ করেছিল

WebView wb_previewSurvey=new WebView(this); 


       wb_previewSurvey.setWebChromeClient(new WebChromeClient() {
        @Override
        public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
            //Required functionality here
            return super.onJsAlert(view, url, message, result);
        }

    });

0

যদি আপনি ব্যবহারকারীর থেকে URL টি গোপন করতে চান তবে নীচের মত একটি সতর্কতা ডায়ালগ দেখান।

myWebView.setWebChromeClient(new WebChromeClient() {

            @Override
            public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
                Log.d(TAG, "onJsAlert url: " + url + "; message: " + message);
                AlertDialog.Builder builder = new AlertDialog.Builder(
                        mContext);
                builder.setMessage(message)
                        .setNeutralButton("OK", new OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int arg1) {
                                dialog.dismiss();
                            }
                        }).show();
                result.cancel();
                return true;
            }
    }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.