1

我正在使用Trumbowyg,这是一个所见即所得的 JavaScript 编辑器,它允许通过粘贴 URL 来呈现图像。

因此,您将 URL 粘贴到字段中,然后单击Confirm按钮,然后将图像附加到编辑器中(您可以在此处进行测试

我想防止添加不是 HTTPS 的图像。因此,如果有人插入不是 HTTPS 的 URL,我想防止在他们单击时附加图像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 输入吗?

4

3 回答 3

1

这个问题的一个很好的解决方案是使用正则表达式,或者简称:Regex。

正则表达式允许您验证字符串是否实际包含您期望的数据。正则表达式的一个缺点是它是 CPU 密集型的。这就是为什么只有在没有其他功能可用时才应使用正则表达式的原因。碰巧,还有另一个可用的函数: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;
}
于 2018-07-07T06:35:33.043 回答
0

我会使用正则表达式来检查这个

var url = v.url;

然后使用匹配功能

url.match(/^https:\/\//);

小心使用startsWith('https')来检查这一点,因为startsWith()并非所有浏览器都支持

于 2018-07-07T06:23:06.530 回答
0

您可以使用正则表达式检查 url 中是否存在“https”,例如 url.match(/^https/),也可以使用 url.startsWith('https') 来查找 url 是否以 https 开头.

于 2018-07-07T06:16:04.190 回答