Я постоянно получаю сообщение об ошибке "Error: Permission denied to access property 'document'"
пока я уже определил в своих параметрах X-FRAME options
чтобы разрешить другой домен, например.
<?php header('X-Frame-Options: ALLOW-FROM http://mydomain.com'); ?>
Ниже заголовок запроса iframe, ясно показывает, что я определил, чтобы домен мог получить доступ к iframe, но не работал. Все, что я хочу, это изменить размер iframe с помощью javascript.
Вот мой код javascript для изменения высоты iframe.
<iframe src="http://mydomain.com/xxx/yyy" id="idIframe" onload="iframeLoaded();" allowtransparency="true" frameborder="0" width="100%" scrolling="no"></iframe> <script type="text/javascript"> function iframeLoaded() { var iFrameID = document.getElementById('idIframe'); if(iFrameID) { iFrameID.height = ""; if(iFrameID.contentWindow.document.body.scrollHeight < 500) { iFrameID.height = "500px"; } else { iFrameID.height = iFrameID.contentWindow.document.body.scrollHeight + "px"; } } } </script>
Как я могу это сделать? Пожалуйста, предложите.
У меня совсем недавно была эта проблема. Наконец, я решил это с помощью метода postMessage.
В документе, включенном в iFrame, я проверяю, действительно ли он выполняется из iFrame.
function inIframe(){ if(top != self){ var contentHeight = $('#myIframeContent').height(); //Just this part I did with jQuery as I was sure that the document uses it postSize(contentHeight); } }
Если документ работает в iFrame, вызовите функцию, которую мы будем называть postSize.
function postSize(height){ var target = parent.postMessage ? parent : (parent.document.postMessage ? parent.document : undefined); if(typeof target != "undefined" && document.body.scrollHeight){ target.postMessage(height, "*"); } }
Добавьте следующий код в документ, который включает ваш iFrame
function receiveSize(e){ if(e.origin === "http://www.mywebsite.net"){ var newHeight = e.data + 35; document.getElementById("myIframeID").style.height = newHeight + "px"; } } window.addEventListener("message", receiveSize, false);
К сожалению, я не могу вспомнить точные источники всего этого, поскольку я рассматривал множество различных решений здесь, в Stackoverflow, но также и на разных веб-сайтах. Но это решение работает хорошо для меня.
ура
обновление compatability.js до последней версии исправило это для меня.