Разрешить только HTTPS URL в поле ввода
Я использую Trumbowyg, редактор WYSIWYG JavaScript, который позволяет отображать изображения, вставляя URL.
Таким образом, вы вставляете URL в поле и затем нажимаете Confirm
и затем он добавляет изображение в редактор ( вы можете проверить его здесь)
Я хочу предотвратить добавление изображений, которые не являются HTTPS. Поэтому, если кто-то вставит URL, не являющийся HTTPS, я хочу запретить добавление изображения при нажатии Confirm
,
Это функция для URL изображения ( из документации):
insertImage: function () {
var t = this;
t.saveRange();
var options = {
url: {
label: 'URL',
required: true
},
alt: {
label: t.lang.description,
value: t.getRangeText()
}
};
if (t.o.imageWidthModalEdit) {
options.width = {};
}
t.openModalInsert(t.lang.insertImage, options, function (v) { // v are values
t.execCmd('insertImage', v.url);
var $img = $('img[src="' + v.url + '"]:not([alt])', t.$box);
$img.attr('alt', v.alt);
if (t.o.imageWidthModalEdit) {
$img.attr({
width: v.width
});
}
t.syncCode();
t.$c.trigger('tbwchange');
return true;
});
}
Любая идея, как я могу изменить эту функцию, чтобы разрешить только входы HTTPS?
3 ответа
Хорошим решением этой проблемы было бы использование регулярных выражений или коротких: Regex.
Regex позволяет вам проверить, действительно ли строка содержит ожидаемые вами данные. Недостатком регулярного выражения является интенсивная загрузка процессора. Вот почему регулярное выражение следует использовать только в том случае, если для этой работы нет другой функции. Как это бывает, для этого есть еще одна функция: substr ().
Поэтому лучшим решением будет:
var url = v.url;
if(!url.substr(0,7) === 'https://'){
return false;
}
Хотя изучение регулярных выражений определенно полезно в долгосрочной перспективе. Веб-сайт, который поможет вам в этом, https://regex101.com/. В конечном итоге вы столкнетесь с ситуациями, когда другие решения просто недоступны. Поэтому тестирование с помощью регулярных выражений является хорошим способом обучения. Используя регулярное выражение, решение будет:
var url = v.url;
if(!url.match(/^https:\/\//)){
return false;
}
Вы можете использовать регулярное выражение для проверки наличия "https" в URL-адресе, например url.match(/^https/), или использовать url.startsWith("https"), чтобы определить, начинается ли URL-адрес с https или нет.,
Я бы использовал регулярное выражение, чтобы проверить это
var url = v.url;
затем используйте функцию соответствия
url.match(/^https:\/\//);
Остерегайтесь использования startsWith('https')
чтобы проверить это, как startsWith()
не поддерживается во всех браузерах