ব্রাউজারে ফোনগ্যাপ খোলা লিঙ্ক


114
<a target="_blank" data-rel="external" href="http://www.kidzout.com">www.kidzout.com</a>

আরে বিশেষজ্ঞরা আমি ফোনগ্যাপ ২.৯.০ ব্যবহার করছি এবং আমি উপরের কোডটি ব্রাউজারে লিঙ্কটি খুলতে ব্যবহার করছি তবে এটি এটি একই অ্যাপে খোলে ...... সাফারি ব্রাউজারটি কীভাবে খুলবেন?

এটি একই অ্যাপ্লিকেশনটিতে ওয়েবসাইটটি খোলায় এবং তারপরে আমি অ্যাপটিতে ফিরে আসতে পারিনি, সুতরাং আমার অ্যাপটি মুছতে হবে এবং এটি আবার ইনস্টল করা দরকার .....


আপনি যদি _blankবাহ্যিক ব্রাউজারে এবং _selfওয়েবভিউতে খুলতে চান তবে কর্ডোভা 5.1.1 এর জন্য আমার 2015 সমাধানটি দেখুন: stackoverflow.com/a/32227524/82609
সেবাস্তিয়ান লোরবার

অনুরূপ প্রশ্নের উত্তরগুলিও দেখুন: stackoverflow.com/a/26176013/1480587 এবং stackoverflow.com/a/46619378/1480587
পিটার টি।

উত্তর:


225

অনুরূপ প্রশ্নে প্রস্তাবিত হিসাবে, ইন অ্যাপ ব্রাউজার ডকুমেন্টেশন অনুযায়ী সেট করা যুক্তিটির window.openসাথে কল করতে জাভাস্ক্রিপ্ট ব্যবহার করুন :target_system

<a href="#" onclick="window.open('http://www.kidzout.com', '_system'); return false;">www.kidzout.com</a>

এটি কাজ করা উচিত, যদিও এর চেয়ে আরও ভাল এবং আরও নমনীয় সমাধান হ'ল সমস্ত লিঙ্কের clickইভেন্টগুলিকে বাধা window.openদেওয়া এবং লিঙ্কটির বৈশিষ্ট্যগুলি থেকে পড়া আর্গুমেন্টগুলি সহ কল করা।

মনে রাখবেন এটির কাজ করার জন্য আপনাকে অবশ্যই অ্যাপ অ্যাপো ব্রাউজার প্লাগইন ইনস্টল করতে হবে:

cordova plugin add cordova-plugin-inappbrowser

3
হ্যাঁ, আমিও কর্ডোভা ১.k.০ তে একই টার্গেট = "_ ফাঁকা" ব্যবহার করেছি তবে এখন আমি ২.৯.০ নিয়ে কাজ করছি এবং এটি আমাকে বিরক্ত করছে, আপনার এই মামলাটিও কাজ করেনি ...... :(
আহসান আলী

6
হ্যাঁ আমিও এটি চেষ্টা করেছিলাম এবং আপনার যে লিঙ্কগুলি ভাগ করেছিলাম সেগুলিও অনুসরণ করেছিলাম, আপনার সহায়তার জন্য ধন্যবাদ তবে সমস্যাটি এখনও রয়েছে, সাইটটি এখনও অ্যাপটিতে খোলা হচ্ছে ...... :(
আহসান আলি

আরে আহসান, আপনার ইস্যুটি কী তা নিয়ে আপনি কি বিশদ বিবরণ করবেন? আমি মনে করি আমারও একই সমস্যা হতে পারে।
হোসনেম

3
মনে রাখবেন এটি কাজ করার জন্য আপনাকে অবশ্যই অ্যাপ অ্যাপ ব্রাউজার প্লাগইনটি ইনস্টল করতে হবে, নির্দেশাবলী এখানে: কর্ডোভা.এপাচি.আর.ডোকস
এএন

7
আমার একই সমস্যা আছে ... সমাধানটি কাজ করছে না :( এটি ঠিক একটি নিয়মিত লিঙ্ক হিসাবে খোলে (অ্যান্ড্রয়েডে)
ড্যানিয়েল

29

অন্যান্য পোস্টে উত্তর হিসাবে, আপনার কাছে বিভিন্ন প্ল্যাটফর্মের জন্য দুটি পৃথক বিকল্প রয়েছে। আমি যা করি তা হ'ল:

document.addEventListener('deviceready', onDeviceReady, false);

function onDeviceReady() {

    // Mock device.platform property if not available
    if (!window.device) {
        window.device = { platform: 'Browser' };
    }

    handleExternalURLs();
}

function handleExternalURLs() {
    // Handle click events for all external URLs
    if (device.platform.toUpperCase() === 'ANDROID') {
        $(document).on('click', 'a[href^="http"]', function (e) {
            var url = $(this).attr('href');
            navigator.app.loadUrl(url, { openExternal: true });
            e.preventDefault();
        });
    }
    else if (device.platform.toUpperCase() === 'IOS') {
        $(document).on('click', 'a[href^="http"]', function (e) {
            var url = $(this).attr('href');
            window.open(url, '_system');
            e.preventDefault();
        });
    }
    else {
        // Leave standard behaviour
    }
}

সুতরাং আপনি দেখতে পাচ্ছেন যে আমি ডিভাইস প্ল্যাটফর্মটি যাচাই করছি এবং তার উপর নির্ভর করে আমি একটি আলাদা পদ্ধতি ব্যবহার করছি। স্ট্যান্ডার্ড ব্রাউজারের ক্ষেত্রে, আমি স্ট্যান্ডার্ড আচরণটি ছেড়ে দিই। এখন থেকে সমাধানটি অ্যান্ড্রয়েড, আইওএস এবং ব্রাউজারে দুর্দান্ত কাজ করবে, এইচটিএমএল পৃষ্ঠা পরিবর্তন করা হবে না, যাতে এটিতে ইউআরএলকে স্ট্যান্ডার্ড অ্যাঙ্কর হিসাবে উপস্থাপন করা যায়

<a href="http://stackoverflow.com">

সমাধানটির জন্য ইন অ্যাপব্রোজার এবং ডিভাইস প্লাগইন প্রয়োজন


দুর্দান্ত উত্তর। এটি অন্যের পক্ষে না ঘটলে, আপনার www / কর্ডোভা_প্লাগইনস.জেএস-এ ডিভাইস এবং ইন্যাপব্রোজার কনফিগারেশন উভয়ই অন্তর্ভুক্ত রয়েছে তা নিশ্চিত করুন। আমি যখন প্লাগইন ইনস্টল করি তখন এটি স্টেজিং ফোল্ডারে জেএস এবং প্লাগইন কনফিগারেশন যুক্ত করে আমার প্রাথমিক কাজ করা www ফোল্ডারটি নয়। আমি একবার কনফিগারেশন এবং অবস্থানগুলি বাছাই করার পরে এটি পুরোপুরি কার্যকর হয়েছিল।
মাইকেল বোর্দ্যাশ

1
এটাই সেরা উত্তর! দয়া করে মনে রাখবেন আপনার মাধ্যমে কোনও অ্যাপ্লিকেশন ব্রাউজার প্লাগইন ইনস্টল নেই:$ meteor add cordova:org.apache.cordova.inappbrowser@0.5.4
tixastronauta

কেউ যদি স্নিপেটে অবদান রাখতে চান তবে আমি তা সংক্ষেপে আপলোড করেছি। gist.github.com/redolent/e79722b32a48a536b5ba
redolent

28
<a onclick="navigator.app.loadUrl('https://google.com/', { openExternal:true });">Link</a>

অ্যান্ড্রয়েড এবং পিজি 3.0 নিয়ে আমার জন্য কাজ করে


এখনও অ্যান্ড্রয়েড ২.৩..7 এবং ৪.২.২ উভয় ক্ষেত্রেই আমার কাছে ব্যর্থ বলে মনে হচ্ছে।
ব্যবহারকারী569825

2
কর্ডোভা ৩.৩.০ সহ অ্যান্ড্রয়েড 4.৪.২ এ আমার জন্য কাজ করে। তবে আইওএস 6.1 এ কাজ করে না।
পুরাণকর্তা

কর্ডোভা আমার জন্য কাজ করে 3.3.0, ধন্যবাদ, এবং আপনি এই তথ্যটি কোথায় পেয়েছেন? দস্তাবেজ খুঁজে পাওয়া যায় নি।
তেওমন শিপাহি

এটি আমার জন্য কর্ডোভা 3.4.1 এবং অ্যান্ড্রয়েড 4.2 নিয়ে কাজ করেছে। আমার প্লাগইন লাগেনি। আমি iOS7 এ পরীক্ষার পরে ফিরে রিপোর্ট করব।
pgsandstrom

অ্যান্ড্রয়েডে আমার জন্য এটিই একমাত্র সমাধান যা ধন্যবাদ, ধন্যবাদ
নিরাজ চৌহান

21

অ্যান্ড্রয়েড এবং আইফোনে ইউআরএল খোলার জন্য দুটি ভিন্ন উপায় রয়েছে।

আইওএসের জন্য নিম্নলিখিত কোড ব্যবহার করুন।

window.open("http://google.com", '_system');

এবং অ্যান্ড্রয়েড ওএসের জন্য নিম্নলিখিত কোডটি ব্যবহার করুন।

navigator.app.loadUrl("http://google.com", {openExternal : true});

কর্ডোভা window.open("http://google.com", '_system')ঠিক পাশাপাশি ব্যবহার করতে পারে । আপনার ব্যবহার করা উচিত নয় navigator.app.loadUrl, কারণ এটি market://ইউআরএলগুলির সাথে কাজ করবে না : সেক্ষেত্রে এটি কেবল আপনার অ্যাপ্লিকেশনটি বন্ধ করবে এবং একই উইন্ডোতে খুলবে .. সবসময় পছন্দনীয় নয়।
Agamemnus

1
অ্যাগামেমনাস, উইন্ডো.ওপেন আমার ফোনগ্যাপ 3.6 অ্যাপ্লিকেশনটিতে অ্যান্ড্রয়েডে কাজ করছে না। এটির কাজটি করার জন্য আমার এই উত্তরের সমাধানটি ব্যবহার করতে হবে।
মোল্ডে

10

: অবশেষে এই পোস্টে আমার iOS এ সাহায্য করে http://www.excellentwebworld.com/phonegap-open-a-link-in-safari-or-external-browser/

"CDVwebviewDelegate.m" ফাইলটি খুলুন এবং "shouldStartLoadWithRequest" অনুসন্ধান করুন, তারপরে ফাংশনের শুরুতে এই কোডটি যুক্ত করুন:

if([[NSString stringWithFormat:@"%@",request.URL] rangeOfString:@"file"].location== NSNotFound) {
    [[UIApplication sharedApplication] openURL:[request URL]];
    return NO;
}

navigator.app.loadUrl("http://google.com", {openExternal : true});অ্যান্ড্রয়েডের জন্য ব্যবহার করার সময় ঠিক আছে।

কর্ডোভা মাধ্যমে 3.3.0।


এটি কেবলমাত্র আমার জন্য 3.0.0.0 এ কাজ করেছিল worked ধন্যবাদ!!
রক্লান

3.0 এ আপনাকে ইনপ্ল্রোজার প্লাগইন অন্তর্ভুক্ত করতে হবে। তবে অদ্ভুত মনে হতে পারে।
শান বানিস্টার

আমি এটিকে মেইনভিউকন্ট্রোলআর.এম উপরে উপরে একটি স্তর পরিবর্তন করব: - (বিওএল) ওয়েবউইউ: (ইউআইবিউবভিউ *) স্টার্টলয়েডউইথউইকুইস্ট: (এনএসআরএলউইকুয়েস্ট *) নেভিগেশন টাইপ: (ইউআইইউবিউভিউভিউ নেভিগেশন টাইপ) নেভিগেশন টাইপ [[অনুরোধ URL] URL যদি ([[ইউআরএল স্কিম] একুয়ালটিস্ট্রিং: @ "ফাইল"] || [[ইউআরএল স্কিম] হল একলটিস্ট্রিং: @ "ফাঁক"]) {ফিরে আসুন [সুপার ওয়েবভিউ: স্ট্যান্ডলয়েডভিথআরউইয়েস্ট: অনুরোধ নেভিগেশন টাইপ: নেভিগেশনটাইপ]; } অন্য {[[ইউআইএএপ্লিকেশন শেয়ারড অ্যাপ্লিকেশন] ওপেন URL: url]; ফেরত না; }}
গামাদ্রিল

10

এই প্ল্যাটফর্মের খোলার জন্য বাহ্যিক লিঙ্কগুলি পাওয়ার জন্য এই উত্তরগুলির কোনওটিই যথেষ্ট স্পষ্ট নয়। ইন অ্যাপ ব্রাউজার ডক্স অনুসারে :

ইনস্টল করুন

cordova plugin add cordova-plugin-inappbrowser

উইন্ডো ওপেন ওভাররাইট করুন (optionচ্ছিক, তবে সরলতার জন্য প্রস্তাবিত)

window.open = cordova.InAppBrowser.open;

যদি আপনি ওভাররাইট না করেন তবে আপনি window.openদেশীয় window.openফাংশনটি ব্যবহার করবেন এবং একই ফলাফল ক্রস প্ল্যাটফর্মের আশা করতে পারবেন না।

ডিফল্ট ব্রাউজারে লিঙ্কগুলি খুলতে এটি ব্যবহার করুন

window.open(your_href_value, '_system');

নোট করুন যে পরিবর্তে এর জন্য inAppBrowser (যা প্লাগইন নামটি ব্যবহার করা উচিত তা বোঝায়) '_blank'এর লক্ষ্য '_system'


উপরের পদক্ষেপগুলি ব্যতীত, আমি ডিফল্ট ব্রাউজার অ্যাপ ক্রস-প্ল্যাটফর্মে লিঙ্কগুলি খুলতে সক্ষম হয়েছি।

অতিরিক্ত creditণ

লিঙ্কগুলির জন্য এখানে একটি উদাহরণ (সরাসরি) ক্লিক হ্যান্ডলারের রয়েছে:

document.addEventListener('click', function (e) {
    if (e.target.tagName === 'A' &&
        e.target.href.match(/^https?:\/\//)) {
        e.preventDefault();
        window.open(e.target.href, '_system');
    }
});

আপনি উইন্ডো.ওপেনটি ঠিক কোথায় ওভাররাইড করবেন? ওয়েবসাইট বা
কর্ডোভা

আপনার জাভাস্ক্রিপ্ট ফাইলটির শীর্ষস্থানীয় যা আপনি আপনার সূচক
html

7

যদি আপনার চারপাশে jQuery থাকে তবে আপনি এই লিঙ্কটিতে ক্লিকটি আটকাতে পারবেন:

$(document).on('click', 'a', function (event) {
    event.preventDefault();
    window.open($(this).attr('href'), '_system');
    return false;
});

এই ভাবে আপনাকে এইচটিএমএলে লিঙ্কগুলি সংশোধন করতে হবে না, যা অনেক সময় সাশ্রয় করতে পারে। আমি এটি একটি প্রতিনিধি ব্যবহার করে সেট আপ করেছি, এজন্য আপনি এটি দ্বিতীয় দলিল হিসাবে 'এ' ট্যাগ সহ নথির অবজেক্টের সাথে আবদ্ধ হতে দেখছেন। এইভাবে সমস্ত 'এ' ট্যাগগুলি যুক্ত করা হবে তা নির্বিশেষে পরিচালনা করা হবে।

অবশ্যই আপনাকে এখনও অ্যাপ্লিকেশন ব্রাউজার ইনস্টল করতে হবে:

cordova plugin add org.apache.cordova.inappbrowser

এটি একটি দুর্দান্ত ধারণা যা আমি ব্যবহার করব তবে আপনার সরাসরি উইন্ডো.ওপেন কলগুলিরও যত্ন নেওয়া উচিত (সবকিছু কোনও লিঙ্কের মধ্য দিয়ে যায় না)
সেবাস্তিয়ান লোরবার

3
window.open('http://www.kidzout.com', '_system');

কাজ করবে তবে কেবল যদি আপনার ইনপব্রোজার প্লাগইন ইনস্টল থাকে। টার্মিনালটি ইনস্টল করতে, আপনার প্রকল্পের www ফোল্ডারে ব্রাউজ করুন এবং টাইপ করুন:

phonegap plugin add org.apache.cordova.inappbrowser

অথবা

cordova plugin add org.apache.cordova.inappbrowser

তারপরে এটি আপনার লিঙ্কটি ব্রাউজারে খুলবে।


কমান্ডটি বাতিল phonegap local <command>করা হয়েছে। কমান্ডটি অর্পণ করা হয়েছে phonegap <command>। কমান্ডটি phonegap local <command>শীঘ্রই সরানো হবে।
অজয় সুওয়ালকা

আমি অতীতে জানি না, তবে আজকাল এই প্লাগইনটি ইনস্টল করার জন্য সঠিক cordova plugin add cordova-plugin-inappbrowser
প্লিনিও এফএম

2

কর্ডোভা 5.0 এবং এর চেয়েও বড় প্লাগইন দিয়ে ইন অ্যাপব্রোজারকে কর্ডোভা প্লাগইন রেজিস্ট্রিতে নতুন নামকরণ করা হয়েছে, সুতরাং আপনার এটি ব্যবহার করে ইনস্টল করা উচিত

cordova plugin add cordova-plugin-inappbrowser --save

তারপরে ব্যবহার করুন

<a href="#" onclick="window.open('http://www.kidzout.com', '_system');">www.kidzout.com</a>


1

আমি আইওএসের উপর ফোকাস সহ ফোনগ্যাপ বিল্ড (v3.4.0) ব্যবহার করছি এবং ইন্যাপব্রোজার প্লাগ-ইন সনাক্ত করতে ফোনগ্যাপের জন্য আমার কনফিগার.এক্সএমএল-এ এই প্রবেশ করা দরকার।

<gap:plugin name="org.apache.cordova.inappbrowser" />

এর পরে, উইন্ডো.ওপেন (ইউআরএল, টার্গেট) ব্যবহার করে প্রত্যাশার মতো কাজ করা উচিত, এখানে ডকুমেন্টেড হিসাবে ।


1
আমি m also using PhoneGap Build (v3.5.x) and added the plugin via the config.xml. But what i get is an InAppBrowser without controls an cannot call the safari browser. Iকেবল উইন্ডো.ওপেন () ব্যবহার করছি। কোন পরামর্শ?
রিনিস

যদি এটি সঠিকভাবে সেটআপ হয় তবে উইন্ডো.পেনটি কেবলমাত্র কাজ করা উচিত। আমার পরিস্থিতিতে উইন্ডো.ওপেন অন্য একটি ব্রাউজারের url খুলছে, এবং এটি ঠিক আছে। ইউআরএল ঠিক আছে তা নিশ্চিত করুন।
যোগাযোগমাট

আমি স্রেফ ফোনগ্যাপ বিল্ড দিয়ে এটি চেষ্টা করেছি এবং এটির সাথে এটির ত্রুটি রয়েছে: "প্লাগইন অসমর্থিত: org.apache.cordova.inappbrowser"
ডেভিড বল

1

আমি এই সমস্যার মুখোমুখি হয়েছি যে লিংকটি ব্রাউজারে খোলেনি, পদক্ষেপগুলি সহ এখানেই আমার ফিক্স:

1: এই কর্ডোভা প্লাগইনটি ইনস্টল করুন।

cordova plugin add cordova-plugin-inappbrowser

2: এইচটিএমএলে নীচের মত ওপেন লিঙ্কটি যুক্ত করুন।

<a href="#" onclick="window.open('https://www.google.com/', '_system', 'location=yes');" >Google</a>

3: এটি আমার পক্ষে প্রচুর ইস্যুর মুখোমুখি হওয়ায় এটি সর্বাধিক আমদানিকর পদক্ষেপ: cordova.jsফাইলটি ডাউনলোড করুন এবং wwwফোল্ডারে এটি আটকে দিন । তারপরে index.htmlফাইলটিতে এটির একটি রেফারেন্স তৈরি করুন।

<script src="cordova.js"></script>

এই সমাধানটি পরিবেশ অ্যান্ড্রয়েড এবং আইফোন উভয়ের জন্যই কাজ করবে।


-2

এটার মত :

<a href="#" onclick="window.open('https://www.nbatou.com', '_system'); return false;">https://www.nbatou.com</a>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.