由于不匹配协议导致阻塞的iframe

时间:2016-06-28 09:38:27

标签: javascript html http iframe

我正在尝试从父窗口向按钮click事件的框架发送一个值,但它在控制台上显示错误

  

Uncaught SecurityError:阻止具有原点的帧   " http://localhost:53838"从访问带有原点" null"的框架。   请求访问的帧具有" http"的协议,帧为   access具有" file"的协议。协议必须匹配。

在以下一行:

window.parent.setUpFrame();

我在父容器中有以下代码:

<!DOCTYPE html>
<html>
<head>

<script>
function setUpFrame() { 
    var frame = window.frames['myFrame'];
    $('#btn-violet').click(function () {
        frame.changeTheme(2);
    });
}
</script>

</head>
<body>

<iframe id="myFrame" width="100%" height="300px" src="http://localhost:53838/" name="iframe_a"></iframe>    <input type="button" value="bisque Theme" id="btn-bisque" />
<input type="button" value="violet theme" id="btn-violet" />

</body>
</html>

框架中的代码如下所示:

<script>
        function init()
        {
            window.parent.setUpFrame();
            return true;
        }

        function changeTheme(id)
        {
            if (id == 1) {
                $('#CustomStyle').attr('href', '/Content/StyleSheet1.css');
            }
            else
            {
                $('#CustomStyle').attr('href', '/Content/StyleSheet2.css');
            }
        }
</script>

2 个答案:

答案 0 :(得分:1)

如果您的父页面是通过文件提供的,那就是问题所在。您不能将文件页面与http嵌套框架混合。您也应该从文件中加载iframe。

答案 1 :(得分:1)

您似乎通过文件协议访问了#34; main&#34; -html(只需双击html?)。

请尝试通过http://localhost:53838/访问,或通过文件协议加载iframe。