javascript مشكلة جافاسكريبت سبليت ريجكس بوج إن IE7




حل مشكلة الجافا في جوجل كروم (2)

لقد قمت بحل يعمل على ريجكس ({[^{}]*}) وربما الآخرين أيضا.

function ieSplit(str, separator) {
    var match = str.match(RegExp(separator, 'g'));
    var notmatch = str.replace(new RegExp(separator, 'g'), '[|]').split('[|]');
    var merge = [];
    for(i in notmatch) {
        merge.push(notmatch[i]);
        if (match != null && match[i] != undefined) {
            merge.push(match[i]);
        }
    }
    return merge;
}
alert(ieSplit(text, '({[^{}]*})'));
// result in FF : .box.round ,{border-radius: 10px;},
// result in IE7: .box.round ,{border-radius: 10px;},

أنا أحاول تقسيم مع هذا التعبير العادي ({[^{}]*}) في جافاسكريبت وأحصل على نتيجة مختلفة راجع للشغل IE7 و فف. نتيجة فايرفوكس هي النتيجة الصحيحة.

<style>
.box.round {
    border-radius: 10px;
}
</style>
<script>
jQuery(function ($) {
    $('style').each(function () {
    text = $(this).html();

    alert(text);
    alert(text.split(/({[^{}]*})/));
    // result in FF: .box.round ,{border-radius: 10px;},
    // result in IE7: .box.round
    });
});
</script>

تحديث هل هناك طريقة لتغيير التعبير العادي بحيث تعمل في IE7 أيضا دون إضافة مكتبة جافا سكريبت؟


اطلع على مشاركة المدونة القديمة هذه لإيجاد حل ممكن للتباين في التعامل مع المجموعات التي تم التقاطها في .split() ريجكسيس.

من تلك المادة:

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

مكتبة زريجيكس ليفيثان صغيرة حقا ومفيدة، ويشمل الإصلاحات.







internet-explorer-7