تستغرق وقتا طويلا XSLT دون معلقة المتصفح ؟

StackOverflow https://stackoverflow.com/questions/1230466

  •  22-07-2019
  •  | 
  •  

سؤال

(N. B.:نعم هذا سؤال سخيف و سوف يكون كليا unsurprised إذا كان الجواب على هذا السؤال هو "لا".إلى أن قال:)

لقد كتب XSLT التي تعمدت ينفذ طويلة ، unparallelizable على حساب XML جزء.إنه يقصد مكون من دليل أعمال نظام لاستخدامها في مستعرض ويب كنوع من CAPTCHA التي لا تتطلب أي مساهمة من المستخدم-نتيجة حساب يحصل على تقديم شكل خفي العنصر عندما مشاركاتك البيانات إلى الخادم.شكل محتويات لا تقبل إلا إذا كان احتساب القيمة الصحيحة.(حساب منظم في مثل هذه الطريقة التي يمكن للخادم بثمن بخس توفير المستخدم مع معلمات الإدخال إلى وظيفة ، والخادم يعرف النتيجة دون الحاجة إلى القيام بالكثير من العمل ، ولكن المستخدم آلة لقضاء دورات لتحديد النتيجة.)

التحول يعمل على ما يرام, ولكن للأسف توقف المتصفح في حين أن حساب يحدث.لأن هدفي هو أن يكون هذا الحساب على التوالي بينما استمر المستخدم إلى استخدام المتصفح ، هذا أمر غير مقبول مزعج السلوك. هل هناك طريقة خلفية التحول واترك المتصفح صالحة للاستعمال في حين أنها تعمل ؟ فكرت لتحميل مصدر XML جزء من iframe, لكني لم أكن قادرة على الحصول على تحويل إلى العمل في استخدام هذا النهج.فكرت أن تسأل هنا أن نرى إذا كان أي شخص لديه أي أفكار رائعة قبل ضرب رأسي ضد هذا أبعد من ذلك بكثير -- إذا أنا أحاول أن تفعل شيئا جوهريا من المستحيل نظرا طريقة عمل المتصفحات, سيكون من الجميل أن تعرف.

وأنا أعلم أنني يمكن أن تفعل هذا في جافا سكريبت ، ولكن سيكون من الجميل أن لا يكون.أي أفكار ؟

تحرير: يا رفاق أعرف عن recaptcha.net وغيرها من البدائل.هذا هو التجربة.هدفي هو معرفة ما إذا كانت فكرة نظرية يمكن أن تخفض إلى الممارسة بطريقة ليست مرهقة جدا بالنسبة للمستخدم.أنا لا أبحث عن تطبيقات بديلة, أنا أبحث عن طريقة التشفير القوي CAPTCHA التي لا تنطوي على جافا سكريبت.(إذا أردت استخدام جافا سكريبت, كنت استخدم واحد من جافا سكريبت hashcash تطبيقات.) فقط الأخرى المستندة إلى مستعرض تورينج-الكامل في اللغة هناك XSLT.يرجى النظر في مسألة في الروح التي طلبت.

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

المحلول

يمكنني استخدام xslt في iframe, و يعمل على ما يرام - ربما هناك بعض المسألة لا علاقة لها كنت تعمل في.

إذا كنت ترغب في الجهاز إلى تقديم قيمة معينة دون تفاعل المستخدم و بدون جافا سكريبت, النظر في استخدام باستخدام ميتا التحديث:

  1. وتشمل صغيرة, مخفية iframe على صفحة ويب الذي يشير إلى عنوان url على ملف xml والذي يتضمن أنماط المعالجة التوجيه الخاص بك xslt حساب المحرك
  2. مهندس xslt الملف مثل ذلك الإخراج يولد إعادة توجيه إلى URL مع حساب المنوال المشفرة في عنوان ؛ أيحساب url:

    <meta http-equiv="refresh" content="0;url=http://xyz.abc/captcha?......">

حيث ellided القسم يحتوي على الرمز المميز الخاص بك.التي ينبغي من حيث المبدأ العمل.

من ناحية أخرى, أنا أشك أن xslt مفيد جدا عن شيء مثل هذا.المتصفحات قد تجهض حساب إذا كان يستغرق وقتا طويلا ؛ حتى في iframe قد تحصل على عرقلة السلوك ، على واحد النظم الأساسية حتى غير حجب السلوك قد يكون فعال حجب الاختلافات في XSLT محركات هي تلك التي كنت يكون من الصعب العثور على التحول أن كل محرك ينفذ سريع بما فيه الكفاية ولكن لا شيء الحريق من خلال على الفور تقريبا.

لا أعتقد جافا سكريبت أن تكون جيدة جدا لهذا ، XSLT ربما حتى أقل ملاءمة.إذا كنت تريد حقا مثل هذا الحساب ، silverlight قد يكون أفضل رهان على الأقل يمكنك كتابة التعليمات البرمجية التي تنفذ في كل مكان بسرعة معقولة لكن هذا لا مستقبل المحرك يمكن أبدا التقليل من شأن (انها قريبة بما فيه الكفاية الأصلية السرعة التي يجب أن تكون قادرا على كتابة التعليمات البرمجية التي هي قريبة إلى حد ما إلى الأمثل من أجل وحدة المعالجة المركزية - بالتأكيد يمكنك أن تأتي ضمن عاملا 10 ، والتي ربما لا يمكن أن يقال جافا سكريبت/XSLT).

نصائح أخرى

أنت لن تكون قادرة على إجراء تحويل XSLT بعد تحميل الصفحة واستخدام نتائجها في شكل في نفس الصفحة دون جافا سكريبت.أنا لا أعرف لماذا IFrame الحل لا يعمل ، ولكن حتى لو فعلت, كنت لا تزال بحاجة جافا سكريبت إلى استيراد النتيجة في صفحة النموذج.

نصيحتي أن يكون استخدام صغيرة وسريعة جافا سكريبت على أساس نظام تراجع إلى اختبار reCAPTCHA إذا تم تعطيل جافا سكريبت.أنت لا تحتاج إلى جعل دليل عمل وحدة المعالجة المركزية مكثفة ، أي عرف الحل في التخلص من الغالبية العظمى (إن لم يكن كل) من المتطفلين هناك.

على سبيل المثال, الصفحة الخاصة بك يمكن أن تحتوي على شيء مثل

<input type="hidden" name="a" value="123" />
<input type="hidden" name="b" value="456" />
<input type="hidden" name="c" />

وتعيين قيمة c (a+b) في جافا سكريبت.بوت-يتعين على صناع التكيف مع السير على وجه التحديد إلى موقع الويب الخاص بك من أجل حل هذا بسيط للغاية CAPTCHA.وإذا فعلوا ذلك (أي أنهم لن) ثم إضافة حقل جديد والتي سوف تحدد ما نوع العملية لأداء على أ و ب على ج.وإذا كانوا التكيف مرة أخرى, تغيير اسم الحقول.في كل احتمالات ، لن التكيف إلا إذا كان موقع الويب الخاص بك يحدث أن تكون في أليكسا أعلى 10.

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