2016-09-25 11 views
0

ハイパーリンクを使用してAmazonの書籍のISBNを開くJavascriptコードがあります(例:0133098648など)。 URLを新しいウィンドウで開いて、同じウィンドウ上の新しいタブですべてのリンクをクリックしてください。現在のウィンドウの新しいタブ、または毎回新しいウィンドウでのみ開くことができます。これはブラウザで可能ですか? [JavaScript/HTML]

私も可能なことを探していますか?私はこのようなことがセキュリティ上の理由からブラウザによって制限されていることを読んできました。多分、回避策がありますか?私は私の人生をはるかに容易にすることができれば、これのための解決策を見つけることを試みる私の髪を引き出しています。

私の質問を説明するための画像:http://imgur.com/a/5lUP4

をJSfiddle例を使用してください:http://jsfiddle.net/mq1efed2(コードStackoveflow上では動作しません)

<html> 
 
<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.ca/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((?:\d\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.replace(/\D+/g, '')); 
 
     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

"セキュリティの理由から"いくつかの制限がある場合、 "回避策"はありません。 – Pointy

+0

この正確な質問を先にお願いしましたか? –

+0

あなたが何を求めているのかよく分かりません。 onclickハンドラをリンクに追加し、onclickハンドラが3番目のパラメータなしでwindow.openを使用する場合は、高さと幅またはその他の3番目のパラメータを持つタブで開き、ウィンドウをポップアップする必要があります。ほとんどのブラウザでは、target = "...."がタブで開きます。内容が同じ起源でない場合は、開封後に新しいウィンドウ/タブを操作することはできません – mplungjan

答えて

0

いいえ、これは不可能です。 Webページは、コンテンツがタブまたは新しいウィンドウで開くかどうかを指定することはできません。決定するのはユーザー/ブラウザの責任です。

最高でも、window.open()で新しいウィンドウを開くことはできますが、後で特定のウィンドウのタブを制御することはできません。

+0

ああ、それは残念です。私の情報を効率的に抽出するために、他の技術や方法を検討しなければなりません。 – Albert

+0

@Albert多分フレームを考えますか?しばらくの間、それを見たことはありませんが、あなたがリンクしているサイトがフレームからバストしない限り、それはまだ機能するはずです。 – Brad

+0

非常にスマートなアイデアは、私はこれが私と一緒に働くと思う。他のドメインはw3schools.comのように動作しますが、Amazon.caはiframe要求をブロックしているようです。回避策はありますか? – Albert

関連する問題