2009-04-15 2 views
-1

Как использовать DOM JavaScript для применения onclick событий к ссылкам внутри iframe?Применить «onclick» ко всем элементам в iFrame

Вот что я пытаюсь, что не работает:

document.getElementById('myIframe').contentDocument.getElementsByTagName('a').onclick = function(); 

Нет ошибок, кажется, быть брошенным, и я полный контроль над материалом в iframe.

Вот некоторый код для проверки и посмотреть, могу ли я хотя бы подсчитать, сколько div находится в моем iframe.

// access body 
var docBody = document.getElementsByTagName("body")[0]; 

// create and load iframe element 
var embed_results = document.createElement('iframe'); 
embed_results.id = "myIframe"; 
embed_results.setAttribute("src", "http://www.mysite.com/syndication/php/embed.php"); 

// append to body 
docBody.appendChild(embed_results); 

// count the divs in iframe and alert 
alert(document.getElementById("myIframe").contentDocument.getElementsByTagName('div').length); 
+0

Вы можете изменить содержимое страницы в IFrame в? –

+0

Не могли бы вы предоставить еще какой-нибудь код, чтобы мы могли искать ошибки? Я хотел бы увидеть контекст, в котором этот код запущен. Проверьте, выполняется ли этот код после загрузки содержимого фрейма, а не раньше. – Rafael

ответ

7

Возможно, для iFrame исходный контент с другого сайта в другом домене.

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

По этой причине вы не можете прикреплять события на своей странице к контенту в iFrame.

+1

Возможно, если вы управляете iframe на обоих доменах - http://softwareas.com/cross-domain-communication-with-iframes – Tony

3

getElementsByTagName возвращает NodeCollection, поэтому вам придется перебирать эту коллекцию и добавлять обработчик onclick каждому узлу в этой коллекции. Код ниже должен работать.

var links = document.getElementById('myIframe').contentDocument.getElementsByTagName('a'); 
for(var i=0;i<links.length;++i)links[i].onclick=function(){} 

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

embed_results.onload=function(){ 
    // your code 
} 
+0

hmm, получил «отклоненную разрешенную ошибку» – johnnietheblack

+0

Как уже ответил Jon, политика безопасности JavaScript doesn ' t разрешить браузеру получать доступ или изменять содержимое страницы из другого домена. – Rafael

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