I am continuously getting the error "Error: Permission denied to access property 'document'"
while i have already define in my X-FRAME options
to allow the other domain, like this..
<?php
header('X-Frame-Options: ALLOW-FROM http://mydomain.com');
?>
Below is the header of iframe request, clearly shows i have defined to allow the domain to access the iframe but not working. All i want is to resize the iframe using javascript.
Here is my javascript code to resize the iframe height.
<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>
How can i do this? Please suggest.
I very recently had this issue myself. Finally I solved it with the postMessage method.
In the document included to the iFrame I check whether it's actually running from an 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); } }
If the document is running within an iFrame, call a function that we will call 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, "*"); } }
Add the following code to the document that includes your 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);
Unfortunately I cannot remember the exact sources of all this as I was viewing a lot of different solutions here on Stackoverflow, but also different websites. But this solution works good for me.
Cheers
Not sure why the other solutions use an iFrame ID. It should also work without:
Page within the iFrame which sends a message to outside:
<script>
parent.postMessage('your message', '*');
</script>
Parent frame:
window.addEventListener("message", receiveMessage, false);
function receiveMessage(event)
{
console.log('Message: ', event.data);
}
updating compatability.js to latest version fixed it for me.
来源:https://stackoverflow.com/questions/22481340/error-permission-denied-to-access-property-document