2015-08-19 2 views
0

Я использую iframe, предоставляемый третьей стороной (из-за того, что у нас есть бизнес, он либо оплачивает iframe, либо оплачивает их для создания веб-сайта, а iframe был лучше подходит для того, что нам нужно). Однако есть некоторые вещи, которые мы не можем сделать с iframe, что было бы полезно. Однако, поскольку это временные вещи и стоить несколько сотен фунтов стерлингов каждый раз, когда мы хотим что-то изменить, было бы лучше, если бы мы могли получить к нему доступ через родительскую страницу, содержащую iframe.Как получить доступ к iframe из основного документа javascript

Например, у нас есть форма в iframe, которая по умолчанию относится к определенному продукту (в зависимости от страницы), на котором вы находитесь, однако вы можете искать другие. Однако для некоторых продуктов мы в настоящее время не имеем дело с ними, поэтому было бы неплохо иметь окно предупреждения, которое появляется на главной странице, что говорит пользователю, что мы не справляемся с этим.

Например, если у кого-то есть «Партия плавания», у нас может появиться всплывающее сообщение, в котором говорится: «Извините, в настоящее время мы не можем предложить какие-либо плавательные площадки, однако, если вы позвоните в NUMBER, мы забронируем его для вас как можно скорее насколько возможно " А также, если кто-то напечатает, мы сможем загладить первую букву, если бы кто-то поставил это имя как« steve », а не« Steve »(например)

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

+0

Если ваша главная страница загружает страницу клиентов через вызов window.open, вы можете ссылаться на содержимое внутри iframe через переменную window.open. Если вы поддерживаете html5, вы можете использовать API window.postMessage для связи между различными кадрами. Существуют и другие варианты, такие как ввод дополнительных скриптов в iframe для анализа URL-адресов iframe и т. Д., Но они менее желательны и/или выполняют imho. – Shilly

+0

Но будет ли это работать, когда у нас нет доступа к iframe? Компания, которая его создала, использует одно и то же для нескольких предприятий, и они не будут добавлять вещи, если это абсолютно необходимо:/ – jordsta95

+0

Что вы контролируете? Только родительское окно, содержащее iframe или только содержимое внутри iframe? – Shilly

ответ

0

Пробег: contentDocument или contentWindow.document. Макет ниже работает для меня. Некоторые примечания:

1) Вам нужно подождать, пока весь документ будет загружен, у меня возникла небольшая проблема с выбором iframe перед загрузкой содержимого. Если вы предъявите иск jquery, это не будет проблемой. ;).

2) Если содержимое фрейма перекрестно домен, вам придется вводить некоторый сценарий в IFRAME, чтобы извлечь HTML узлы, которые вы заинтересованы в

Главная

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8" /> 
    <title>Main</title> 
</head> 
<body id="mainbody"> 
    <div>MAIN</div> 
    <iframe id="myFrame" src="test_3.html"></iframe> 
    <script src="test.js"></script> 
</body> 
</html> 

Iframe Page

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8" /> 
    <title>Inner</title> 
</head> 
<body id="iframebody"><div id="nameDiv">MY NAME</div></body> 
</html> 

Script

document.body.onload = function() { 
    document.querySelector('#myFrame').contentDocument.querySelector('#nameDiv').textContent = 'NEW NAME'; 
}; 
Смежные вопросы