2016-09-25 2 views
0

У меня есть код Javascript, который открывает ISBN книги на Amazon с помощью гиперссылок (не стесняйтесь попробовать, например: 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 использует window.open без 3-х параметров, он должен открыться на вкладке с высотой и шириной или другими третьими параметрами, это должно всплывающее окно. target = "...." откроется на вкладке в большинстве браузеров. Если контент не с того же источника, вы не сможете манипулировать новыми окнами/вкладками после открытия – mplungjan

ответ

0

Нет, это не возможно , Веб-страницы не могут определять, открывается ли содержимое в вкладках или в новых окнах. Это зависит от пользователя/браузера.

В лучшем случае вы можете открыть новое окно с window.open(), но это не даст вам контроля над вкладками в определенном окне позже.

+0

А, это позор. Я должен искать другие технологии или методы для эффективного извлечения моей информации. – Albert

+0

@Albert Возможно, рассмотрим кадры? Не видели этого некоторое время, но он все равно должен работать, если сайты, на которые вы ссылаетесь, не выходят из фреймов. – Brad

+0

Очень умная идея, я думаю, это может со мной работать. Только проблема: Amazon.ca блокирует запрос iframe, хотя другие домены работают, например w3schools.com ... Любые методы обхода? – Albert

Смежные вопросы