获取IFrame子级的高度时出错

时间:2013-02-23 04:04:06

标签: javascript jquery wordpress iframe

在获取从iframe调用的页面高度时出现非常奇怪的错误。我去了thogleh谷歌并检查了其他Stackoverflow帖子相关的“权限被拒绝访问属性文档”但尚未找到任何解决方案。我有一个指向另一台服务器的网站。我在Iframe上收到此错误。我来提供代码

Jquery

$(document).ready(function()
    {
        // Set specific variable to represent all iframe tags.
        var iFrames = document.getElementsByTagName('iframe');

        // Resize heights.
        function iResize()
        {
            // Iterate through all iframes in the page.
            for (var i = 0, j = iFrames.length; i < j; i++)
            {
                // Set inline style to equal the body height of the iframed content.
                iFrames[i].style.height = iFrames[i].contentWindow.document.body.offsetHeight + 'px';
            }
        }

        // Check if browser is Safari or Opera.
        if ($.browser.safari || $.browser.opera)
        {
            // Start timer when loaded.
            $('iframe').load(function()
                {
                    setTimeout(iResize, 0);
                }
            );

            // Safari and Opera need a kick-start.
            for (var i = 0, j = iFrames.length; i < j; i++)
            {
                var iSource = iFrames[i].src;
                iFrames[i].src = '';
                iFrames[i].src = iSource;
            }
        }
        else
        {
            // For other good browsers.
            $('iframe').load(function()
                {
                    // Set inline style to equal the body height of the iframed content.
                    this.style.height = this.contentWindow.document.body.offsetHeight + 'px';
                }
            );
        }
    }
);

和IFrame

<iframe style="margin-bottom: 16px;" src="ourteamnav/first.php" frameborder="0" scrolling="no" width="597" height="240"></iframe> 

我收到了“权限被拒绝访问属性文档”错误,因此高度不会根据其中的文档高度而来。然后我尝试了以下代码

function resizeIframe(ifRef) 
        {
            var ifDoc;
            //alert(ifRef);

            try
            { 
                ifDoc = ifRef.contentWindow.document.documentElement; 
            }
            catch( e )
            {
                try
                { 
                ifDoc = ifRef.contentDocument.documentElement; 
                }
                catch( ee ){} 
            }
            var doc = ifRef.height;
            //alert(doc);
            if(ifDoc)
            {
                ifRef.height = 1; 
                ifRef.style.height = ifDoc.scrollHeight+'px';               
            }
        }

和iframe

<iframe onload="resizeIframe(this)" style="margin-bottom: 16px;" src="ourteamnav/first.php" frameborder="0" scrolling="no" width="597" height="240"></iframe`> 

在这种情况下,我发现javascript没有错误,但它没有用。但奇怪的是他们两个都在我的本地服务器上工作,并且当代码存在的服务器现在没有指向另一个时也工作。(跨站点脚本)。

请帮我解决这个问题。

我用过的参考资料

error : Permission denied to access property 'document'

Error document.form is undefined in javascript

http://davidwalsh.name/iframe-permission-denied

https://sqa.stackexchange.com/questions/1453/how-to-fix-permission-denied-to-access-property-document

http://sahi.co.in/forums/discussion/2898/error-permission-denied-to-access-property-document-with-ckeditor/p1

http://www.codingforums.com/showthread.php?t=236484

1 个答案:

答案 0 :(得分:-2)

这称为XSS异常。错误:错误:访问属性'document'的权限被拒绝

不幸的是,您不想要做的事情 - 在不同于父域的网站上操纵iframe的内容或窗口。周期。