2015-05-01 3 views
7

Я новичок в Javascript и изучаю основы через учебник, который фокусируется на его приложениях в IE 7+ и Firefox 2+. Тем не менее, я использую Chrome и получаю следующую ошибку при запуске программы, приведенной в книге: «заблокировал кадр происхождения« null »от доступа к кадру с перекрестным началом». Может ли кто-нибудь сказать мне, что вызывает ошибку, и как я могу это исправить? Ниже приведены две программы.заблокировал кадр происхождения «null» от доступа к кадру скрещивания - chrome

//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> 

Ниже файл ЦСИ

<!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> 
+0

Вы используете это с локального компьютера, или размещен на веб-сервере? – CodingIntrigue

+0

По умолчанию Chrome не позволяет загружать фреймы с локального жесткого диска для доступа к содержимому друг друга. Если бы фреймы были на одном и том же веб-сервере, они могли бы. У Chrome есть аргумент командной строки, который временно приостановит эту проверку безопасности. – jfriend00

ответ

14

Это происходит потому, что Chrome не позволяет кадры с жесткого диска, чтобы получить доступ к содержимому друг друга. Который, технически мы называем запросом Кросс-происхождения.

Решение вышеуказанной проблемы:

1. Либо вы размещаете свою веб-страницу на локальном веб-сервере. Смотрите следующую ссылку:
What is a faster alternative to Python's http.server (or SimpleHTTPServer)?

2. Используйте любой другой браузер, как Firefox

+1

Спасибо, он сработал. – jewelhuq

Смежные вопросы