Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.10.2019, 16:54
Интересующийся
Отправить личное сообщение для basil.veber Посмотреть профиль Найти все сообщения от basil.veber
 
Регистрация: 12.09.2019
Сообщений: 16

Как получть нужный url href cо страницы другого домена
Подскажите пожалуйста решение.
Как получить c site.ru/page.html 2-ю по счету ссылку и повесить ее на <button onclick="url">Открыть</button> на сайте site.com/page.html где будет размещена эта кнопка и этот скрипт.
Ответить с цитированием
  #2 (permalink)  
Старый 19.10.2019, 22:10
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

На сайте site.ru/page.html добавьте заголовок Access-Control-Allow-Origin: site.com

На сайте site.com/page.htm разместите эту кнопку и этот скрипт...
<button id="my-button">Открыть</button>
<script>

const button = document.getElementById("my-button");
	
fetch("http://site.ru/page.html").then(async response => {
	const parser = new DOMParser();
	return parser.parseFromString(await response.text(), "text/html");
}).then(loadedDocument => {
	button.onclick = () => open(loadedDocument.links[1].href)
}).catch(error => {
	button.remove();
});

</script>
Ответить с цитированием
  #3 (permalink)  
Старый 23.10.2019, 21:52
Интересующийся
Отправить личное сообщение для basil.veber Посмотреть профиль Найти все сообщения от basil.veber
 
Регистрация: 12.09.2019
Сообщений: 16

Malleys,
Спасибо за ответ. Но есть один момент. Сайт site.ru/page.html мне не принадлежит с которого хочу получить ссылку, поэтому заголовок прописать нет возможности. А будет это работать если на своем сайте я сначала выведу страницу чужого через фрейм, а потом уже обращусь через скрипт к ней?
Ответить с цитированием
  #4 (permalink)  
Старый 23.10.2019, 22:55
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от basil.veber
А будет это работать если на своем сайте я сначала выведу страницу чужого через фрейм, а потом уже обращусь через скрипт к ней?
Нет, но вы можете использовать сервис, который добавит нужные заголовки для работы в браузере, например, CORS Proxy... Вы можете добавить перед адресом запроса https://corsproxy.glitch.me/ и это будет работать, но я вам рекомендую использовать свой сервер, где будет запущен CORS Proxy, и который будет настроен под вас (например, ограничение доступа).

Например, тогда можно взять вторую ссылку с Яндекса...
<button id="my-button">Открыть</button>
<script>

const button = document.getElementById("my-button");
	
fetch("https://corsproxy.glitch.me/https://yandex.ru/").then(async response => {
	const parser = new DOMParser();
	return parser.parseFromString(await response.text(), "text/html");
}).then(loadedDocument => {
	button.onclick = () => open(loadedDocument.links[1].href)
}).catch(error => {
	button.remove();
});

</script>

Последний раз редактировалось Malleys, 23.10.2019 в 22:58.
Ответить с цитированием
  #5 (permalink)  
Старый 24.10.2019, 01:25
Интересующийся
Отправить личное сообщение для basil.veber Посмотреть профиль Найти все сообщения от basil.veber
 
Регистрация: 12.09.2019
Сообщений: 16

Malleys,
Приведенный пример вами и некоторые другие работают, а вот с нужной мне страницей скрипт что-то не хочет. В консоли браузера вот это после клика по кнопке:
Цитата:
Uncaught TypeError: Cannot read property 'href' of undefined
at HTMLButtonElement.button.onclick
.
Видео нужно более точная настройка. Например по классу "link-title" атрибута "а" (<a class="link-title" href="" target=_top title=""><span></span></a>)
Ответить с цитированием
  #6 (permalink)  
Старый 24.10.2019, 03:52
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

У а потому что берётся вторая по счёту ссылка которая на странице может и не быть.
Ответить с цитированием
  #7 (permalink)  
Старый 24.10.2019, 13:22
Интересующийся
Отправить личное сообщение для basil.veber Посмотреть профиль Найти все сообщения от basil.veber
 
Регистрация: 12.09.2019
Сообщений: 16

Malleys, перепробовал от links[1] до links[10]. Но на выходе тот же результат.
Подскажите пожалуйста что на что заменить чтобы он тянул ссылку из
Цитата:
a class="link-title"
, так сказать ткнуть его носом в нужный элемент, раз так не видит.
Ответить с цитированием
  #8 (permalink)  
Старый 24.10.2019, 13:58
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Заменить

button.onclick = () => open(loadedDocument.links[1].href)

на

button.onclick = () => open(loadedDocument.querySelector('a.link-title').href)

это будет первая ссылка с таким именем класса из имеющихся на странице. Если надо иную, то querySelectorAll('a.link-title')[нужный индекс]
Ответить с цитированием
  #9 (permalink)  
Старый 24.10.2019, 15:32
Интересующийся
Отправить личное сообщение для basil.veber Посмотреть профиль Найти все сообщения от basil.veber
 
Регистрация: 12.09.2019
Сообщений: 16

laimas, работает. Но по какой-то причине ссылка не передается. Открыается пустая вкладка about:blank
Ответить с цитированием
  #10 (permalink)  
Старый 24.10.2019, 15:55
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от basil.veber
работает ... Открыается пустая вкладка about:blank
Так работает или не работает?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как поместить iframe в угол страницы? xaknik Events/DOM/Window 4 31.07.2010 02:41
Как зайти с сервера на какой-либо url? bayah Общие вопросы Javascript 6 25.04.2010 19:05
Как разделять страницы при выводе отчета ilshat Events/DOM/Window 7 10.12.2009 10:24
как найти нужный объект? `p r o x y jQuery 2 05.05.2009 01:12
как сделать плавное затухание страницы magistr_bender Элементы интерфейса 1 18.03.2009 14:34