it-swarm.asia

كسر مسج / CSS في فايرفوكس - ColorBox و reCAPTCHA

أنا أعمل على ما يبدو أنه نموذج اتصال أساسي. أستخدم المكوّن الإضافي ColorBox لـ jQuery لإنشاء نموذج باستخدام ارتباط صورة ، والذي يفتح ColorBox يحتوي على نموذج reCAPTCHA وزر الإرسال للنموذج.

يعمل هذا الرمز بشكل مثالي في IE7 وما بعده ، ويعمل حتى إلى حد ما في IE6 ، ولكن في Firefox ، Opera و Chrome عندما أقوم بالنقر فوق الزر "إرسال" ، يظهر لإزالة الصفحة بالكامل كما إذا كانت تمر عبر رابط فعلي.

أنا متأكد من أنني ارتكبت خطأً سخيفًا حقًا هنا في مكان ما ، فهل يمكن لأي شخص إلقاء نظرة سريعة على الكود ومعرفة أين أكون مخطئًا؟ هذه المشكلة تم التنصت لي منذ فترة وهي توقف تقدمي مع الكثير من الأشياء الأخرى.

تحرير: سخيفة لي! لقد أدركت أنني لم أدرج عنوان URL! هنا هو اختصار واحد كنت تمر حول IRC ...

http://is.Gd/f3M2s

EDIT 2: عند فتح ColorBox ، يتم "عرض" الكود التالي ، وفقًا لـ View Source.

<script type="text/javascript" src="http://www.google.com/recaptcha/api/js/recaptcha.js"></script><div id="recaptcha_widget_div" style="display:none"></div><script>Recaptcha.widget = Recaptcha.$("recaptcha_widget_div"); Recaptcha.challenge_callback();</script><div id="recaptcha_widget_div" style="display:none"></div><script>Recaptcha.widget = Recaptcha.$("recaptcha_widget_div"); Recaptcha.challenge_callback();</script>
2
Mike B

اتضح أنها مشكلة شائعة نسبيًا بالنسبة لأولئك الذين يستخدمون البرنامج المساعد PHP لـ reCAPTCHA. قررت استخدام رمز البرنامج المساعد للجزء من جانب الخادم ، لكن بناء نموذج reCAPTCHA يدويًا باستخدام جافا سكريبت المحدد ، والآن يعمل بشكل جيد.

0
Mike B

سيؤدي تغيير زر الإرسال من نوع إرسال إلى زر إلى منع إرسال النموذج.

http://jsfiddle.net/tfcuA/

إذا نقرت فوق زر إرسال ، فستحتاج إلى "ازدحام" سلوك الإرسال الافتراضي عن طريق إرجاع خطأ أو استخدام منع فرض jQuery.

بخلاف ذلك ، هل قمت باستخدام Captcha في التعامل مع تعليمات برمجية الزناد من onsubmit في النموذج.

2
Metalshark

يمكنك إيقاف الحدث العادي للنقر بإضافة شيء مثل هذا:

$("#linkButtonId").click( function (event){
 event.preventDefault(); event.stopPropagation();
 // things that should happen in this function on click
});

يمكن العثور على مزيد من المعلومات حول preventDefault و stopPropagation هنا

هذا سيمنع إرسال النموذج الخاص بك أو في المثال الخاص بي انقر فوق الارتباط.

0
user1961

كنت أرتب JS للأعلى قليلاً في مستند واحد جاهز ، وانقل المكان الذي يتم فيه تعريف showHeader للوظيفة قبل أن يتم استدعاؤها.

ومع ذلك ، أعتقد أن السبب الرئيسي في المشكلة هو وجود نص برمجي من Google يقوم بتحميل محتوى Captcha داخل قسم captcha div. لقد رأيت شيئًا مماثلاً في الماضي مع Colorbox والمحتوى الذي تمت إضافته ديناميكيًا (في هذه الحالة ، كانت مقاطع فيديو).

يكمن الحل في فصل محتويات #recaptcha div في ملف منفصل والسماح لـ Colorbox بإدخاله في DOM عند النقر.

$("a.captcha").colorbox({
    width: "30%",
    href: "recaptcha.html" //or .php or whatever
});

تحرير: قمت بتحرير JSFiddle المقدمة من Metalshark (+1 لـ jsfiddle - مورد رائع) لإظهار أن jQuery يعمل بشكل جيد: http: //jsfiddle.net/tfcuA/13/ > هذه المراجعة تستبدل ببساطة recaptcha ببعض محتوى الاختبار الذي لم يتم تحميله ديناميكيًا من أي مكان آخر ، وهو يعمل ، مما يشير إلى أن حل الفصل يجب أن يعمل أيضًا.

0
bcmcfc