it-swarm.dev

phonegap الرابط المفتوح في المتصفح

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

يا خبراء أنا أستخدم phonegap 2.9.0 وأنا أستخدم الكود أعلاه لفتح الرابط في المتصفح ولكن يتم فتحه في نفس التطبيق ...... كيفية فتحه متصفح سفاري؟

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

113
ahsan ali

كما هو مقترح في سؤال مماثل ، استخدم JavaScript للاتصال بـ window.open باستخدام الوسيطة target لتعيين _system ، وفقًا ل وثائق InAppBrowser :

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

يجب أن يعمل هذا ، على الرغم من أن الحل الأفضل والأكثر مرونة هو اعتراض جميع الأحداث click ، والاتصال بـ window.open مع الوسيطات التي تمت قراءتها من سمات الارتباط.

تذكر أنه يجب عليك تثبيت المكون الإضافي InAppBrowser حتى يعمل هذا:

cordova plugin add cordova-plugin-inappbrowser
216
freejosh

كما هو مذكور في المشاركات الأخرى ، لديك خياران مختلفان لمنصات مختلفة. ما أقوم به هو:

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
    }
}

حتى تستطيع أن ترى أنني أتحقق من النظام الأساسي للجهاز واعتمادًا على ذلك ، فأنا أستخدم طريقة مختلفة. في حالة وجود متصفح قياسي ، أترك السلوك القياسي. من الآن فصاعدًا ، سوف يعمل الحل بشكل جيد على Android و iOS و في المتصفح ، في حين لن يتم تغيير صفحة HTML ، بحيث يمكن أن يكون لها عناوين URL ممثلة كمذيعة قياسية

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

يتطلب الحل إضافات InAppBrowser و Device

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

يعمل لي مع Android & PG 3.0

26
user2758937

هناك طريقتان مختلفتان لفتح URL في Android و iphone.

FOR IOS استخدم الكود التالي.

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

وللنظام التشغيل أندرويد استخدام التعليمات البرمجية التالية.

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

أخيرًا ، يساعدني هذا المنشور على نظام التشغيل 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}); لنظام Android ، يكون موافق.

عبر كوردوفا 3.3.0.

10
mytharcher

لا توجد أي من هذه الإجابات واضحة بما يكفي لفتح الروابط الخارجية في كل منصة. حسب مستندات inAppBrowser :

تثبيت

cordova plugin add cordova-plugin-inappbrowser

الكتابة فوق window.open (اختياري ، ولكن يوصى به للبساطة)

window.open = cordova.InAppBrowser.open;

إذا لم تقم بالكتابة فوق window.open ، فستستخدم الدالة window.open الأصلية ، ولا يمكنك توقع الحصول على نفس النتائج عبر النظام الأساسي.

استخدمه لفتح الروابط في المتصفح الافتراضي

window.open(your_href_value, '_system');

لاحظ أن الهدف من inAppBrowser (وهو ما يوحي اسم البرنامج المساعد باستخدامه) هو '_blank' ، بدلاً من '_system'.


بدون الخطوات المذكورة أعلاه ، لم أتمكن من الحصول على روابط لفتحها في النظام الأساسي المتقاطع لتطبيق المستعرض الافتراضي.

رصيد إضافي

فيما يلي مثال على معالج النقر المباشر (live) للروابط:

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

إذا صادفت وجود مسج حولك ، يمكنك اعتراض النقر على الرابط مثل هذا:

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

بهذه الطريقة لن تضطر إلى تعديل الروابط في html ، والتي يمكن أن توفر الكثير من الوقت. لقد قمت بإعداد هذا باستخدام مفوض ، ولهذا السبب ترى أنه مرتبط بكائن المستند ، مع وضع علامة "a" على الوسيطة الثانية. وبهذه الطريقة ، سيتم التعامل مع جميع العلامات "أ" ، بصرف النظر عن تاريخ إضافتها.

Ofcourse لا يزال عليك تثبيت المكون الإضافي InAppBrowser:

cordova plugin add org.Apache.cordova.inappbrowser
7
Michel Reij
window.open('http://www.kidzout.com', '_system');

ستعمل ولكن فقط إذا كان لديك البرنامج المساعد inappbrowser مثبتة. لتثبيت ، باستخدام المحطة ، استعرض للوصول إلى مجلد www في مشروعك واكتب:

phonegap plugin add org.Apache.cordova.inappbrowser

أو

cordova plugin add org.Apache.cordova.inappbrowser

بعد ذلك سوف يفتح الرابط الخاص بك في المتصفح.

3
Dev01

باستخدام Cordova 5.0 وأكبر ، يتم إعادة تسمية InAppBrowser المساعد في سجل المكون الإضافي Cordova ، لذلك يجب عليك تثبيته باستخدام

cordova plugin add cordova-plugin-inappbrowser --save

ثم استخدام

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

أنا أستخدم PhoneGap Build (v3.4.0) ، مع التركيز على iOS ، وكنت بحاجة إلى الحصول على هذا الإدخال في config.xml الخاص بي لـ PhoneGap للتعرف على مكون InAppBrowser الإضافي.

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

بعد ذلك ، يجب أن يعمل استخدام window.open (عنوان url ، الهدف) كما هو متوقع ، كما هو موثق هنا .

1
contactmatt

واجهت أيضًا مشكلة عدم فتح الرابط في المتصفح هنا وهو إصلاحي بالخطوات التالية:

1: تثبيت هذا البرنامج المساعد cordova.

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>

سوف يعمل هذا الحل مع كل من بيئة Android و iPhone.

1
Tabish

مثله :

<a href="#" onclick="window.open('https://www.nbatou.com', '_system'); return false;">https://www.nbatou.com</a>
0
OussamaChaib