将click事件添加到动态生成的html中

时间:2019-01-23 20:09:01

标签: javascript angular typescript ionic-framework

我正在构建一个离子应用程序,允许用户彼此聊天。

如果用户以纯文本形式发送url,则我有一个名为urlify的函数,该函数用html替换了文本,当用户单击html的url时,应该将其带到那个位置。网址。

问题在于,锚点元素无法在Ionic中打开url,因此我必须使用window.open(url)

这是我的代码:

urlify(text) {
  if(text) {
    var urlRegex = /(https?:\/\/[^\s]+)/g;
    return text.replace(urlRegex, function(url) {
        return '<span class="message-link">' + url + '</span>';
    })
  }
}

openLink(url) {
  window.open(url, '_system')
}

因此,当用户单击span时,它应该打开openURL,但是由于无法将(click)="openURL(url)"添加到动态生成的html中,所以我不确定该怎么做。

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:0)

这可以为您提供帮助,您可以通过这种方式动态添加任何内容。

urlify(text) {
  if(text) {
    var urlRegex = /(https?:\/\/[^\s]+)/g;
    return text.replace(urlRegex, function(url) {
        let newElement = document.createElement('span');
        newElement.innerHTML = url
        newElement.classList.add('message-link');
        newElement.onclick = function() {
            window.open(url, '_system')
        }
        return newElement
    });
  }
}

您可以返回此newElement或将其添加到此处,例如,以这种方式添加document.getElementById('someDivID').append(newElement)