blockiert eine frame of origin "null" aus, die Zugriff auf eine cross-origin-Rahmen - Chrom
Ich bin neu in Javascript und Lerne die Grundlagen über ein lehrbuch, das konzentriert sich auf Ihre Anwendungen in IE 7+ und Firefox 2+. Allerdings bin ich mit Chrome und erhalte die folgende Fehlermeldung beim ausführen des Programms in dem Buch gegeben: "blockiert ein Rahmen von origin 'null', keinen Zugang zu einem cross-origin-frame ist." Kann mir jemand sagen was den Fehler verursacht und wie ich es beheben kann? Die beiden Programme sind im folgenden beschrieben.
//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>
Unten ist die src-Datei
<!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>
- Laufen Sie von einem lokalen Computer oder auf einem Webserver gehostet?
- Standardmäßig Chrome wird nicht zulassen, dass frames geladen von Ihrer lokalen Festplatte für den Zugriff auf alle anderen Inhalte. Wenn die frames waren auf der gleichen web-server, Sie könnte. Chrome hat ein command-line-argument, die vorübergehend auszusetzen, diese Sicherheits-check.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies geschieht, weil Chrome nicht erlaubt, die frames von Ihrer Festplatte, um den Zugriff auf alle anderen Inhalte. Die technisch wir Amtszeit als Cross-origin-Anfrage.
Lösung des oben genannten Problems ist:
1. Entweder Sie hosten Ihre Webseite auf einem lokalen Webserver. Unter folgendem link zu finden:
Was ist eine schnellere alternative zu Python http.server (oder SimpleHTTPServer)?
2. Verwenden Sie einen anderen browser, wie Firefox
blocked a frame of origin “http://127.0.0.1:8080” from accessing a cross-origin frame - chrome