2017-05-23 25 views
-1

私は本のisbnsをAmazon.comへのクリック可能なURLリンクに変える非常に簡単なjavascriptを持っています。私がしようとしているのは、「クリックした」ときに新しいタブのすべてのURLリンクを開く機能を追加することです。これにより、すべての単一リンクをクリックする時間を節約できます。JavaScript、リンクをすべて新しいタブで開く

これは実行可能ですか? =)

<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

新しい 'a'を作成するのではなく、' window.open(url); 'を使ってみることができます。 – thepieterdc

答えて

0

あなたは次のように、手動でclickイベントをトリガすることができます

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

しかし、それは、それはあなたの特定のコードで動作することを簡単にお見せするだけの例です。私は、 "すべてのリンクを開く"のようなボタンを持っていることを示唆し、そのボタンを持っているすべてのリンクを収集し、それらをループし、それぞれのclickメソッドを呼び出すためにセレクタを使用することをお勧めします。外側のコンテナ(出力div)に最初の外側セレクタとして使用できるIDを与えることで、自分自身で簡単に作業できるようになります。

関連する問題