2015-02-21 3 views
-4

Этот вопрос предназначен для продвинутых программистов javascript! -Извините за мой плохой английский :(Сделать ссылки в iframe из другого домена, открытые в новой вкладке

Мы имеем следующий сценарий:

--- Сайт А дает мне сценарий

--- я поставил скрипт на сайте B (по индексу. .html)

--- скрипт генерирует IFRAME, который содержит ссылку (< а>)

Result => сайт B содержит ifame со ссылкой на него, с сайта а

Все, что я хочу сделать, это «Для того, чтобы открыть ссылку в новой вкладке»: D

Я могу сделать это, добавив с яваскриптом целевого атрибута = «_ пустым» .. НО я наклоняю выбрать ссылку() с javascript, потому что iframe с другого сайта. По соображениям безопасности браузеры не позволяют вам получать доступ к содержимому iframe, если это не с вашего сайта.

Я лечу за какой-то хак ... Я думал, что если игра с событиями мне поможет?

Как поймать событие ссылки, нажмите, чтобы остановить событие, а не запустить новое событие, чтобы открыть ссылку на новой вкладке.

Или поймать LeftClick события, остановить событие, огнь правой кнопка мыши события, чем в меню cotext выберите «Открыть ссылку в новой вкладке» (все это происходит, когда пользователь LeftClick ссылки)

Любые предложения приветствую, мне нужно посмотреть эту проблему с другой точки зрения ...

+2

Если браузер позволяет вам это сделать, это ошибка. Сценарии с одного сайта не должны влиять на iframe с другого сайта каким-либо образом. – Barmar

+1

@GolezTrol Агенты там работают, только если главная страница и iframe находятся в одном домене. Его проблема в том, что они находятся в разных областях, поэтому это не сработает. – Barmar

+0

Хм. Интересно. Одна из возможностей: создать прокси-сервер в своем домене, чтобы вы могли загрузить страницу из другого домена на своем сервере и передать его клиенту, как если бы он был из вашего собственного домена. Вы даже можете добавить 'target =" _ blank "в HTML-код на сервере. Я думаю, что это будет считаться взломом. :) – GolezTrol

ответ

0

Вы можете использовать прокси-сервер. Вот код, который я использую:

get.php

<?php 
    // if no URL is submitted, exit 
    if(!isset($_REQUEST['url'])){echo 'You did not specify a URL'; exit();} 
    $url = $_REQUEST['url']; 
    // instanciate the cURL connection 
    $ch = curl_init(); 
    // set the URL 
    curl_setopt($ch, CURLOPT_URL, $url); 
    // this will allow you to print the content on your page 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    // this is to get the content type (for images for example) 
    curl_setopt($ch,CURLOPT_HEADER,true); 
    $res = curl_exec($ch); 
    // seperate the headers and content 
    list($headers,$content) = explode("\r\n\r\n",$res,2); 
    // set the content type 
    header('Content-type: '.curl_getinfo($ch,CURLINFO_CONTENT_TYPE)); 
    // display the results 
    echo $content; 
    // close the connection 
    curl_close($ch); 
?> 

Вы можете использовать его, передавая ему ссылку:

http://yourdomain.com/get.php?url=http%3A%2F%2Fotherdomain.com%2Fpage.html%0D%0A 

Как вы можете видеть, URL, который должен быть urlEncoded. Также обратите внимание, что любые относительные пути на другой странице не будут загружаться (вы можете улучшить это, заменив любой относительный путь на абсолютный).

+0

Я не знаю iframe src, iframe генерируется скриптом, заданным с сайта A при загрузке страницы ... –

+0

@KristoGodari Знаете ли вы, когда ** генерируется iframe? Вы можете дождаться, когда это произойдет, а затем переключите его src. – blex

+0

Позвольте мне проверить его, я не знаю, могу ли я получить доступ к iframe src с помощью js ... на самом деле скрипт генерирует 2 iframe, Iframe A, содержащий Iframe B, который содержит ссылку. –

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