Javascript “封锁了一个原点框架”;空";从访问交叉原点帧-chrome

Javascript “封锁了一个原点框架”;空";从访问交叉原点帧-chrome,javascript,google-chrome,Javascript,Google Chrome,我是Javascript新手,正在通过一本侧重于其在IE7+和Firefox2+中应用的教科书学习基础知识。然而,我使用的是Chrome,在运行书中给出的程序时出现了以下错误:“阻止了原点帧'null'访问跨原点帧。”有人能告诉我是什么导致了错误以及如何修复它吗?下面是两个程序 //This is the program being loaded into the browser <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transition

我是Javascript新手,正在通过一本侧重于其在IE7+和Firefox2+中应用的教科书学习基础知识。然而,我使用的是Chrome,在运行书中给出的程序时出现了以下错误:“阻止了原点帧'null'访问跨原点帧。”有人能告诉我是什么导致了错误以及如何修复它吗?下面是两个程序

//This is the program being loaded into the browser
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Example</title>

<script type="text/javascript">

function calcFactorial(factorialNumber){
    var factorialResult = 1;
    for(;factorialNumber>0;factorialNumber--) factorialResult *= factorialNumber;
    return factorialResult;
}

</script>

</head>

<frameset cols="100%,*">
<frame name="fraCalcFactorial" src="calcfactorial.htm"/>
</frameset>

</html>
//这是正在加载到浏览器中的程序
例子
函数CalcFactory(阶乘数){
var factorialResult=1;
对于(;factorialNumber>0;factorialNumber--)factorialResult*=factorialNumber;
返回阶乘结果;
}
下面是src文件

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Example</title>
<script type="text/javascript">
function butCalculate_onclick(){
    try{
        if (window.top.calcFactorial == null)
            throw "This page is not loaded within the correct frameset";
        if (document.form1.txtNum1.value == "")
            throw "!Please enter a value before you calculate its factorial";
        if (isNaN(document.form1.txtNum1.value))
            throw "!Please enter a valid number";
        if (document.form1.txtNum1.value < 0)
            throw "!Please enter a positive number";
    }
    catch(exception){
        if (typeof(exception) == "string"){
            if (exception.charAt(0) == "!"){
                alert(exception.substr(1));
                document.form1.txtNum1.focus();
                document.form1.txtNum1.select();
            }
            else alert(exception);
        }
        else alert("The following error occurred: " + exception.message);
    }
}
</script>
</head>
<body>
<form action="" name="form1">
    <input type="text" name="txtNum1" size="3" /> factorial is
    <input type="text" name="txtResult" size="25" /><br/>
    <input type="button" value="Calculate Factorial"
        name="butCalculate" onclick="butCalculate_onclick()" />
</form>
</body>
</html>

例子
函数butCalculate_onclick(){
试一试{
if(window.top.calcFactorial==null)
抛出“此页面未加载到正确的框架集中”;
如果(document.form1.txtNum1.value==“”)
抛出“!请在计算阶乘之前输入一个值”;
if(isNaN(document.form1.txtNum1.value))
抛出“!请输入有效数字”;
如果(document.form1.txtNum1.value<0)
抛出“!请输入正数”;
}
捕获(例外){
if(typeof(exception)=“string”){
如果(异常字符(0)=“!”){
警报(异常子命令(1));
document.form1.txtNum1.focus();
document.form1.txtNum1.select();
}
其他警报(例外);
}
else警报(“发生以下错误:“+exception.message”);
}
}
阶乘是


之所以会发生这种情况,是因为Chrome不允许硬盘中的帧访问彼此的内容。从技术上讲,我们称之为跨产地请求

上述问题的解决方案是:

1.您可以在本地web服务器上托管您的网页。请参阅以下链接:



2.使用Firefox等任何其他浏览器

如果您不想使用接受答案中建议的本地web服务器,您可以在禁用
跨域web安全
/
同源策略
的情况下运行浏览器

对于铬合金

对于Firefox


如果使用Visual Studio代码,则可以安装名为“Live Server”的扩展。当我遇到同样的问题时,它帮助了我。

您是从本地计算机上运行,还是托管在web服务器上?默认情况下,Chrome不允许从本地硬盘加载的帧访问彼此的内容。如果这些帧位于同一个web服务器上,则它们可以。Chrome有一个命令行参数,该参数将暂时挂起此安全检查。请注意,
iframe
以及
frame
都会出现此问题。当我尝试在本地计算机上托管后,该参数对我无效。。出现此错误:
阻止了原始帧”http://127.0.0.1:8080“从访问跨源帧-chrome
Firefox 75.0
似乎遇到了同样的问题,即使从本地运行,这两种方法都不适用于我server@arunwebber你试过firefox吗?Chrome甚至可以用本地浏览器阻止它server@TaouBen现在这可能不是正确的答案。它在6年前得到了回答并正确无误。如果你有一个更新的答案,你可以把它添加到这篇文章中,这样当前的成员将从中获益。谢谢