保留内联tinyMCE中的超链接导航

时间:2015-12-08 22:24:31

标签: javascript tinymce tinymce-4

我有一个内联的tinyMCE编辑器,HTML文本可能包含超链接。如果用户单击超链接,我希望他们转到URL。如果他们点击其他地方,我想进入编辑模式。

HTML:

<div id="tinymce">
  <p>User should be able to <a id="mylink" href="http://google.com">navigate to a link</a> and also edit the text by clicking outside the link.</p>
</div>

剧本:

tinymce.init({
  selector: '#tinymce',
  inline: true
});

$('#mylink').on('click', function(e) {
  // This never fires
  console.log('Link clicked...');
});

jsfiddle:http://jsfiddle.net/rdog33/uLhdq447/

正如您所看到的,我有一个想法,可以挂钩超链接的click事件,并使用window.location.href手动发送用户,但事件不会触发。如果我取消注释tinymce初始化,那么触发,所以显然tinymce会以某种方式干扰。

有什么想法吗?

2 个答案:

答案 0 :(得分:5)

Thariama的答案几乎是正确的 - 谢谢你让我走上正轨。以下是我的最终代码:

tinymce.init({
  selector: '#tinymce',
  inline: true,
  setup: function(editor){
    editor.on('init', function() {
      $(editor.getBody()).on('click', 'a[href]', function(e) {
        window.location.href = $(e.currentTarget).attr('href');
      });
   }
});
  • 修正了语法错误,其中&#39;编辑器&#39;曾两次用作参数
  • 更改了事件处理以处理所有超链接,即使内容已被用户
  • 替换
  • 添加了超链接导航

答案 1 :(得分:1)

这里正确的方法是使用tinymce参数setup并在编辑器准备就绪时向链接元素添加一个单击处理程序(使用init事件)。

tinymce.init({
  selector: '#tinymce',
  inline: true,
  setup: function(editor){
     editor.on('init', function(editor){
       $(editor.getBody()).find('#mylink').on('click', function(e) {
         // This never fires
         console.log('Link clicked...');
       });
     });
  }

});