Javascript,所有链接都在新标签中自动打开

时间:2017-05-23 21:32:50

标签: javascript html

我有一个非常简单的javascript,它将书籍isbns转换为可点击的Amazon.com链接。我想要做的是添加一个功能,当"点击"打开新标签中的所有网址链接。这节省了点击每个链接的时间。

这可行吗? =)

<html>
<head>

</head>
<div><b>ISBN Hyperlinker</b></div>
<textarea id=numbers placeholder="paste isbn numbers as csv here" style="width:100%" rows="8" >

</textarea>
<div><b>Hyperlinked text:</b></div>
<div id="output" style="white-space: pre"></div>



<script>


//the input box.
var input = document.getElementById('numbers');
var output = document.getElementById('output')
var base = 
    'https://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords='



//adding an event listener for change on the input box
input.addEventListener('input', handler, false);

//function that runs when the change event is emitted
function handler () {
  var items = input.value.split(/\b((?:[a-z0-9A-Z]\s*?){10,13})\b/gm);
  // Build DOM for output
  var container = document.createElement('span');
  items.map(function (item, index) {
    if (index % 2) { // it is the part that matches the split regex:
      var link = document.createElement('a');
      link.textContent = item.trim();
      link.setAttribute('target', '_blank');
      link.setAttribute('href', base + item);
      container.appendChild(link);
    } else { // it is the text next to the matches
      container.appendChild(document.createTextNode(item))
    }
  });
  // Replace output
  output.innerHTML = '';
  output.appendChild(container);
}
handler(); // run on load


</script>
</html>

1 个答案:

答案 0 :(得分:0)

您可以手动触发click事件,例如:

  container.appendChild(link);
  link.click();

但这仅仅是一个示例,可以很容易地向您展示它可以与您的代码一起使用。我建议有一个像&#34;打开所有链接&#34;并使用该按钮使用选择器收集所有链接,然后遍历它们并在每个链接上调用click方法。你可以让自己更轻松地为外部容器(输出div)提供一个可用作初始外部选择器的ID。