1

簡単な階乗計算機を作成してほしいJavaScriptブックを操作していると、以下のコードの計算ボタンをクリックすると、「このページは正しいフレームセット内にロードされていません」というエラーが表示され続けます。これで、コードは正しいフレームセットにない場合にこのエラーをスローするようにプログラムされていますが、私の質問はなぜそうではないのですか?

編集:明確にするために、私は間違いなくから始めていcalcfactorialtopframe.htmます。

calcfactorialtopframe.htm

<html>
<head>
<title>Example</title>

<script type="text/javascript">
function calcFactorial(factorialNumber)
{
    var factorialResult = 1;
    for (; factorialNumber > 0; factorialNumber--)
    {
        factorialResult = factorialResult * factorialNumber;
    }
    return factorialResult;
}
</script>
</head>
<frameset cols="100%,*">
    <frame name="fraCalcFactorial" src="calcfactorial.htm" />
</frameset>
</html>

calcfactorial.htm

<html>
<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";

        document.form1.txtResult.value =
            window.parent.calcFactorial(document.form1.txtNum1.value);
    }
    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 occursed " + 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>
4

3 に答える 3

2

はい、これは Chrome のバグです。最新バージョンの Firefox、IE、Opera で正常に動作します :)

于 2012-12-07T14:42:33.097 に答える
0

私の推測では、あなたはcalcfactorial.htmアドレスバーに読み込まれていて、 ではありませんcalcfactorialtopframe.htm

于 2012-06-21T03:51:48.523 に答える
0

これは Chrome 固有のバグです。

以前、同じエラーで IE で同じコードを試しましたが、もう一度試してみると、IE では機能しているように見えますが、Chrome ではまだ機能していないようです。

于 2012-06-21T03:59:18.207 に答える