Summernote - 将_blank或_self添加到链接

时间:2014-01-14 20:50:29

标签: jquery twitter-bootstrap

有一个类似的问题adding attribute to url for Summernote

但它没有增加选择目标的可能性,只是将其设置为空白。

有没有办法在链接弹出窗口中添加“目标”?

    //IE: createLink when range collapsed.
if (agent.bMSIE && rng.isCollapsed()) {
  rng.insertNode($('<A target="_blank" id="linkAnchor">' + sLinkUrl + '</A>')[0]);
  var $anchor = $('#linkAnchor').removeAttr('id')
                                  .attr('href', sLinkUrlWithProtocol);
  rng = range.create($anchor[0], 0, $anchor[0], 1);
  rng.select();
} else {
  document.execCommand("insertHTML",false,'<a target="_blank" href="'+sLinkUrlWithProtocol+'">'+sLinkUrl+'</a>');
}

2 个答案:

答案 0 :(得分:1)

您需要做几件事:

1) 在第2112行(aprox),你会发现:

           '<div class="form-group">' +
                     '<label>' + lang.link.textToDisplay + '</label>' +
                     '<span class="note-link-text form-control input-xlarge uneditable-input" />' +
                   '</div>' +

添加以下代码:

                   '<div class="form-group">' +
                     '<label>' + lang.link.target + '</label>' +
                     '<select class="note-link-target form-control col-md-5" id="link-target"><option value="_self">Same page</option><option value="_blank">New page</option></select>' +
                   '</div>' +

2)第1331行(aprox)包含这些var定义:

  var $linkText = $linkDialog.find('.note-link-text'),
      $linkUrl = $linkDialog.find('.note-link-url'),
      $linkBtn = $linkDialog.find('.note-link-btn');

添加:

$linkTarget = $linkDialog.find('.note-link-target'),  

3)第2357行(aprox)具有链接定义:

    link: {
      link: 'Link',
      insert: 'Insert Link',
      unlink: 'Unlink',
      edit: 'Edit',
      textToDisplay: 'Text to display',
      url: 'To what URL should this link go?'
    },

添加

target: 'Target'

到列表

4)最后:第1011行(aprox)将注释'// IE'中的代码替换为'if'的末尾。

    //IE: createLink when range collapsed.
    var target = $("#link-target").val();
    if (agent.bMSIE && rng.isCollapsed()) {
      rng.insertNode($('<A target="'+target+'" id="linkAnchor">' + sLinkUrl + '</A>')[0]);
      var $anchor = $('#linkAnchor').removeAttr('id')
                                      .attr('href', sLinkUrlWithProtocol);
      rng = range.create($anchor[0], 0, $anchor[0], 1);
      rng.select();
    } else {
      document.execCommand("insertHTML",false,'<a target="'+target+'" href="'+sLinkUrlWithProtocol+'">'+sLinkUrlWithProtocol+'</a>');
    }

答案 1 :(得分:0)

是的,只需修改生成的html即可包含动态目标。

rng.insertNode($('<A target="' + mytarget + '" id="linkAnchor">' + sLinkUrl + '</A>')[0]);

document.execCommand("insertHTML",false,'<a target="' + mytarget + '" href="'+sLinkUrlWithProtocol+'">'+sLinkUrl+'</a>');