2016-04-26 3 views
0

Я искал сообщения javascript/iFrame на StackOverflow около 45 минут, и я собрал несколько больших ресурсов, однако я не могу заставить javascript правильно функционировать внутри iFrame. Я прикрепил два скриншота с веб-сайта, в котором у меня есть iFramed внутри моего. IFrame всплывает с открытым меню, которое занимает 60% кадра. Я хотел бы добавить класс в меню, чтобы закрыть его автоматически при загрузке моей страницы. Я думаю, что у меня есть правильный JS, но я не могу заставить его функционировать. Класс не будет добавлен вообще.Настройка HTML внутри iFrame - Javascript не работает

Menu opened Menu closed Это мой и Javascript плавающего фрейма изменить Див идентификатор «расширен» класса. Я знаю, это звучит глупо, но расширенное название класса для закрытого меню. Любая помощь будет оценена! Благодарю.

<iframe src="http://dayzdb.com/map#2.065.045" style="width:500px; height:300px;" id="dayzdb"></iframe> 

     <script>$("#dayzdb").contents().find("#mapContainer").addClass("expanded")</script> 

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

http://dayzdb.com/map

+0

Я не думаю, что вам нужно '.contents()', если вы делаете '.find()' сразу после, я думаю, что '.find()' достаточно. Кроме того, вы могли бы опубликовать некоторые из HTML, которые содержатся в iFrame? Это может помочь нам понять, почему он неправильно выбирает. –

+0

Является ли 'iframe' из того же домена? Если нет, вы подчиняетесь [той же политике происхождения] (https://en.wikipedia.org/wiki/Same-origin_policy). –

+0

Отличный вопрос, я тоже приложу HTML! И я также попытаюсь удалить содержимое и посмотреть, работает ли это! –

ответ

0

Вы используете один и тот же домен в вашей странице и ваш IFRAME? Не забывайте о политике cross-domain, иначе это не сработает! Если у вас есть контроль над обоими сайтами, вы можете использовать метод postMessage для передачи данных в разных доменах. Очень простой пример:

// framed.htm: 
window.onmessage = function(event) { 
    event.source.postMessage(document.body.innerHTML, event.origin); 
}; 

// Main page: 
window.onmessage = function(event) { 
    alert(event.data); 
}; 

// Trigger: 
// <iframe id="myframe" src="framed.htm"></iframe> 
document.getElementById('myframe').contentWindow.postMessage('','*');