TinyMCE: как добавить ‘http: //’ к URL, если его там нет

#http #url #tinymce

#http #url #tinymce

Вопрос:

Есть ли способ добавить ‘http: //’ к URL, если его там нет, при добавлении URL со ссылкой Insert в TinyMCE?

Ответ №1:

Для этого вам нужно скопировать плагин tinymce Insert Link, переименовать его, добавить к нему необходимый код (добавление «http») и использовать его как свой собственный плагин.

РЕДАКТИРОВАТЬ: Хорошо, вот пример (с использованием jQuery):

 // You might need to change the event and/or tha handling 
// but this should give you a guess at what needs to be done
setup : function(ed)
{
       ed.onClick.add(function(ed, evt)
       {
           $(ed.getBody()).find('a').each(function(index, element){
               if (!$(this).attr('href').search('http')){
                    $(this).attr('href', 'http://'   $(this).attr('href'));
               }
           });
       });
},
  

Комментарии:

1. Спасибо, Тариама. Есть ли какой-либо другой способ сделать это?

2. Вы могли бы использовать параметр setup или собственный плагин для реализации обработчика, который прослушивает указанное событие. Этот обработчик может выполнять поиск в содержимом для ссылки и проверять, установлен ли у них «http».

3. Еще раз спасибо, не могли бы вы, пожалуйста, опубликовать какой-нибудь пример кода, как это сделать? Буду признателен за вашу услугу.

4. Большое спасибо. Я действительно ценю ваши усилия по написанию кода для меня.

Ответ №2:

Я также сталкивался с этой проблемой с версией 4.x. Я обнаружил, что link плагин поддерживает опцию, которая предлагает пользователю добавить протокол. Но, к сожалению, это не упоминается в документации, это задокументировано только в журнале изменений, поэтому я бы предположил, что это широко неизвестно.

 $('textarea').tinymce({
    ...
    link_assume_external_targets: true
    ...
});
  

введите описание изображения здесь

Комментарии:

1. Это помогло. Спасибо.

2. Есть ли возможность пропустить это предупреждение и принудительно добавить http: // ко всем ссылкам без http / https?

3. Насколько мне известно, когда я исследовал это, нет. Хотя, возможно, что-то изменилось.

Ответ №3:

Я добился этого, предварительно заполнив значение поля ‘http: //’ в файле tinymce insertLink.aspx.

 <ui:PropertyPanel runat="server" Text="Url">
   <input type="hidden" id="localUrl" name="localUrl" onchange="" />
   <input id="href" name="href" type="text" style="width: 220px;" value="http://" onchange="document.getElementById('localUrl').value = ''; 
selectByValue(this.form,'linklisthref',this.value);" />
</ui:PropertyPanel>
  

значение=»http: //»

Ответ №4:

в link.js найдите «if (!f.href.value)»

добавьте предложение «else»

     else {
        var href = f.href.value;
        if (href.indexOf('http') == -1) {
            href = 'http://'   href;
            f.href.value = href;
        }
    }
  

** помните, что вы сделали это на случай, если будете обновлять свой компонент tinymce!

Ответ №5:

я только что увидел это, и это может помочь, версия 5:

link_assume_external_targets: [опция];

вы можете использовать опцию «https» или «http», и это не должно вызывать

https://www.tiny.cloud/docs/plugins/opensource/link/#link_assume_external_targets