Javascript 添加目标="_“空白”;使用execCommand';createlink';

Javascript 添加目标="_“空白”;使用execCommand';createlink';,javascript,execcommand,Javascript,Execcommand,我正在尝试为自定义CMS创建一个迷你WYSIWYG编辑器。它有添加和删除链接的选项。它可以添加链接,但希望可以选择向超链接添加target=“\u blank”。此外,如果可能,我希望能够添加alt=”“和title=“” 目前,这是我的代码: function addLink() { var linkURL = prompt('Enter a URL:', 'http://'); editorWindow.document.execCommand('createlink', f

我正在尝试为自定义CMS创建一个迷你WYSIWYG编辑器。它有添加和删除链接的选项。它可以添加链接,但希望可以选择向超链接添加
target=“\u blank”
。此外,如果可能,我希望能够添加
alt=”“
title=“”

目前,这是我的代码:

function addLink() {
    var linkURL = prompt('Enter a URL:', 'http://');
    editorWindow.document.execCommand('createlink', false, linkURL);
}
一直在四处寻找,似乎找不到解决办法。我看到的大多数解决方案都说要添加:

function addLink() {
    var linkURL = prompt('Enter a URL:', 'http://');
    var newLink = editorWindow.document.execCommand('createlink', false, linkURL);
    newLink.target = "_blank";
}

但这似乎不起作用。有什么建议吗?

我找到了解决办法。我不知道这是否是正确的方法,但它是有效的。以下是我用于代码工作的内容:

function addLink() {
    var linkURL = prompt('Enter a URL:', 'http://');
    var sText = editorWindow.document.getSelection();

    editorWindow.document.execCommand('insertHTML', false, '<a href="' + linkURL + '" target="_blank">' + sText + '</a>');
}
函数addLink(){
var linkURL=prompt('输入URL:','http://');
var sText=editorWindow.document.getSelection();
editorWindow.document.execCommand('insertHTML',false',);
}

以防其他人看到并无意中发现…

如果您之前使用了粗体或斜体,TML可能会感到沮丧。 我采用以下方法:

var url='example.com';
var selection=document.getSelection();
document.execCommand('createLink',true,url);

selection.anchorNode.parentElement.target='_blank'由于没有直接的跨浏览器解决方案,因此跨浏览器解决方案可以通过编程将事件处理程序附加到编辑器中的
a

var aLinks = Array.prototype.slice.call(editorElement.querySelectorAll('a'));
aLinks.forEach(function(link) {
      link.addEventListener('click', function() {
          window.open(link.href, '_blank');
      }); 
});

我知道这根线很旧了,但让我把2美分扔进去,也许有人会发现这根线很有用;) 我也在使用WYSIWYG编辑器,因为当我尝试从FF中的选定图像创建链接时,我发现接受的解决方案失败(getSelection()。getRangeAt(0)返回图像的父div,并将图像视为从未存在过的图像(我就是这么看的)),这是一个脏但有效的解决方案(我认为是turbo交叉浏览器)我提出的想法(jQuery):


这是个好主意吗?工作起来很有魅力。这种简单性似乎没有人提到,根据规范,
文档必须处于设计模式:

document.designMode = "on";
那么,以下几点应该起作用:

var url = 'http://google.com';
var selection = document.getSelection();
document.execCommand('createLink', true, url);

是否确实要使用execCommand功能?为什么不简单地创建一个新的link元素并将其添加到dom中,或者更好地使用jQuery?=>另外,不要忘记转义用户可以输入的url,以防止可能的XSSThank回复。我不知道该怎么做。我知道您使用
document.createElement('a')添加并创建了一个新元素然后添加
setAttribute('target','u blank')。我唯一看不到的是如何将链接应用到突出显示的文本。“在IE 11中,document.selection已消失,insertHTML仍然不受支持”您可以像这样使用jQuery$(“a”).attr(“target”,“_blank”);在正常执行命令之后。它只是将属性添加到每个锚点-或者您可以尝试将特定锚点作为目标。。。这很难看,但很管用。你是一个非常聪明的人!非常爱你。。。我很高兴你的存在!祝你天天好运!我没有回答这个问题。OP想要添加target=“\u blank”
var url = 'http://google.com';
var selection = document.getSelection();
document.execCommand('createLink', true, url);