为什么document.getElementById(id).contentWindow不适用于Chrome中的本地htm文件?

时间:2014-10-27 07:38:21

标签: javascript google-chrome iframe resize autoresize

我一直在尝试将某些页面编辑为计算机上的本地htm文件,但是我遇到了这个问题,使用contentWindow属性的函数在父页面和iframe中的页面是本地文件。上传所有页面后,完全相同的代码可以正常工作,但不能作为本地文件。我只在Chrome和Opera中遇到过这个问题。在Firefox和Safari甚至Internet Explorer中,ContentWindow可以正常使用本地文件。

这非常烦人,因为我在我正在处理的页面中调整了动态iframe的大小,并且我不想每次要测试它们时都要重新上传所有页面在Chrome浏览器中,这是我的主浏览器。

Chrome(和Opera)中是否存在导致此问题的某种安全设置,如果可以,则会被禁用?

代码只是:

function resizeIframe(iframeName) {

   document.getElementById(iframeName).style.height = '1000px';

   newHeight = document.getElementById(iframeName).contentWindow.document.body.scrollHeight;

   setTimeout(function () {
        document.getElementById(iframeName).style.height = newHeight + 'px';
   }, 10);
}

1 个答案:

答案 0 :(得分:0)

事实证明, 是安全的东西,但是没有办法简单地从设置菜单中关闭它。关闭它(在Windows中)的唯一方法是在命令提示符窗口中打开Chrome,方法是键入文件路径并添加--allow-file-access-from-files到命令行。这也适用于Opera。

不幸的是,这并没有永久关闭它,因此每次要测试使用contentWindow属性的页面时,都必须以这种方式打开浏览器。当我使用Chrome时,这可以正常运行,因为无论如何我一直在我的电脑上打开它,但是当我想在Opera中测试一些东西时,它有点烦人。也许其他人会发布一种永久性的方式,但现在必须这样做。

来源:

Is it likely that future releases of Chrome support contentWindow/contentDocument when iFrame loads a local html file from local html file?

http://www.chrome-allow-file-access-from-file.com/