JS: изменить внутри тегов ссылки iframe - PullRequest
2 голосов
/ 10 февраля 2012

Я пытаюсь изменить атрибут href всех тегов a внутри iframe извне iframe.

Вот что у меня есть:

<Html>
<Head>
    <Title>change links</Title>
</Head>
<body>
    <iframe style="width:100%;height: 100%;border:0;" id="tab" src="http://www.anyside.co.il" ></iframe>
    <script type="text/javascript">
        var frame = document.getElementById("tab");   
        var tags = frame.getElementsByTagName("a");   
        for (var i = 0; i < tags.length; i++) {   
            tags[i].href = 'javascript:alert("")';  
        } 
</script>
</body>
</Html>

Что плохого в этом коде в том, что он не работает?

Ответы [ 2 ]

3 голосов
/ 10 февраля 2012

во-первых, это должен быть тот же домен

во-вторых, это должно быть:

        var frame = window.frames["tab"].document;
    var tags = frame.getElementsByTagName("a");   
    for (var i = 0; i < tags.length; i++) {   
        tags[i].href = 'javascript:alert("")';  
    } 

или:

var frame = document.getElementById("tab").contentDocument;   
    var tags = frame.getElementsByTagName("a");   
    for (var i = 0; i < tags.length; i++) {   
        tags[i].href = 'javascript:alert("")';  
    }

(в вашем коде у вас есть толькоiframe, но вам нужен документ фрейма этого тега)

и в-третьих, вы должны либо выполнить код при загрузке iframe (см. событие onload для iframe), либо использовать setTimeout с тайм-аутомдостаточно большой для любой скорости соединения.

Редактировать:

В комментариях кажется, что речь идет о другом домене, если вы не можете использовать javascriptили создать кадр для доступа или изменения содержимого в домене.

Если это статическая страница, просто разместите ее самостоятельно, если она динамическая и все в порядке, получая прокси-копию страницы, вы можете использовать несколько способов:

  1. используйте серверный язык (например, php) на том же сервере, чтобы получить и отобразить страницу, затем используйте эту страницу на том же сервере в iframe (тогда вы сможете получить к нему доступ)
  2. yql это тоже может быть способ получить веб-страницу с javascript

Что ж, трудно сказать, не зная, что вы хотите сделать, может быть, владелец сайта может что-то сделать, или, например,если вы просто хотите добавить на сайт советы для своих пользователей, заставив их установить пользовательский сценарий, который будет выполняться на сайте, может быть лучшим способом, не зная, зачем вам это нужно и какова ситуация, трудно сказать.

1 голос
/ 10 февраля 2012

Код JS не может получить доступ к элементам DOM из iframe из-за ограничения безопасности (элементы iframe находятся в другом домене).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...