2012-05-26 8 views
2

У меня есть страница с 2 iframes, и мне было интересно, можно ли иметь ссылку в родительском окне, которая влияет на iframe.Как мне настроить JavaScript для iframe?

Я знаю, как создать обычную ссылку, которая изменяет страницу в iframe, но мне нужно сделать I, чтобы она активировала JavaScript в iframe.

// The JS | normally in one line 
javascript:var%20KICKASSVERSION='2.0'; 
var%20s%20=%20document.createElement('script'); 
s.type='text/javascript';document.body.appendChild(s); 
s.src='//hi.kickassapp.com/kickass.js'; 
void(0); 

Если положить, что в адресной строке она работает без изменения страницы, но мне было интересно, если это возможно в IFRAME. Благодаря!

+0

Мне не ясно, если вы хотите: 1. получить содержимое iframe 2. изменить содержимое iframe, 3. изменить связанную html-страницу iframe. –

+0

Извините, что не вернусь к вам раньше, но я был занят работой. Я не хочу ничего делать. Все, что я хочу сделать, это активировать некоторый javascript в iframe. Я уверен, что вы можете сделать это со вспышкой тоже. – user1373771

ответ

1

Глядя на ваш код, самый простой способ сделать это было бы сделать что-то вроде этого:

var iframe=/*DOM REFERENCE TO YOUR IFRAME, for example:*/document.getElementById('myIframe'); 
iframe.src="javascript:var%20KICKASSVERSION='2.0';var%20s%20=%20document.createElement('script');s.type='text/javascript';document.body.appendChild(s);s.src='//hi.kickassapp.com/kickass.js';void(0);"; 

Тем не менее, более чистый подход будет что-то вроде:

var myLink=document.getElementById('myLink'); 

myLink.addEventListener('click',function(evt){ 
var myFrame=document.getElementById('myFrame'); 
var win=myFrame.contentWindow; 

win.KICKASSVERSION='2.0'; 
var s = win.document.createElement('script'); 
s.type='text/javascript';win.document.body.appendChild(s); 
s.src='//hi.kickassapp.com/kickass.js'; 

evt.preventDefault(); 
} 

Пожалуйста, обратите внимание, что во всех случаях same origin policy.

1

HTML-фреймы имеют свойство contentDocument (см. the MDN page on iframes), которые позволяют вам манипулировать внутренним документом iframe.

Грубые рекомендации (непроверенные, но вы получите идею :)):

var iframe = document.querySelector("iframe"); 
iframe.contentDocument.location.href = "..."; // change the inner iframe's location 
iframe.contentDocument.body.appendChild(yourScriptNode); // append a script inside the iframe 
Смежные вопросы