Серьезная проблема с jQuery и безопасностью ActiveX?

Вместо упомянутого this вместо него можно использовать event.currentTarget:

$("i").click(function(event)
{
    changeColor($(event.currentTarget));
});

const changeColor = ($element) =>
{
    if (!$element.hasClass('clicked'))
        console.log('not clicked class');
}
.clicked {
   color: red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<i class="fas fa-star fa-lg clicked">Button 1</i>

<i class="fas fa-star fa-lg">Button 2</i>

<i class="fas fa-star fa-lg">Button 3</i>

Использование this в коде может привести к путанице, потому что вам нужно хорошо знать, как это работает. Многие люди склонны не использовать его из-за этого.

Имейте в виду, что я переименовал obj в $element. Я настоятельно рекомендую использовать префикс $, чтобы показать, что эта переменная содержит jQuery.

7
задан Shog9 10 February 2009 в 01:03
поделиться

4 ответа

Только пятно, где ActiveX упоминается в коде jQuery, для ActiveXObject который используется для XMLHttpRequests:

// Create the request object; Microsoft failed to properly
// implement the XMLHttpRequest in IE7, so we use the ActiveXObject when it is available
var xhr = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();

Существует нерешенный вопрос здесь... кажется, что jQuery не делает нейтрализации для использования собственного XMLHttpRequest на IE7 (это, вероятно, что Вы испытываете).

Также это могло бы помочь: ссылка

15
ответ дан 6 December 2019 в 07:52
поделиться

jQuery, как большинство библиотек, которые оказывают поддержку для Ajax, будет использовать ActiveX для создания объекта XMLHttpRequest при выполнении в IE. Поскольку это - то, как Вы добираетесь XMLHttpRequest объект в IE. Если Вы отключаете его, то Вы не получаете Ajax.

Так не, не волнуйтесь об этом. Если Вы не будете использовать Ajax, то у Вас не будет проблем в системах, где ActiveX отключен; если Вы сделаете, то у Вас будут проблемы независимо от библиотеки, если Вы не будете использовать обходное решение, такое как использование iframes для подачи фоновых запросов.

6
ответ дан 6 December 2019 в 07:52
поделиться

В дополнение к причинам того, почему jQuery, возможно, придется использовать ActiveX (т.е. Ajax), необходимо также полагать, что не все использования jQuery для функциональности Ajax.

2
ответ дан 6 December 2019 в 07:52
поделиться

Независимо от функциональности AJAX в IE, в jQuery 1.3.2 была проблема, из-за которой этот баннер отображался при первоначальной загрузке jQuery, даже если вы ничего с ним не делали. См. с отметкой № 4017 . Проблема была решена в наборе изменений № 6268 и будет исправлена ​​в jQuery 1.3.3 после его выпуска.

0
ответ дан 6 December 2019 в 07:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: