Javascript window.Namen - Problem im IE
Habe ich Folgendes Szenario.
Website Ein, ist die Eröffnung Website B mit window.open("Website B", "windowName");
In Website B ich habe den folgenden code:
<script>
window.name='';
window.location.href = 'Website C';
</script>
Website In C habe ich in Firefox und Chrome (alle Versionen) window.name
gleich ", aber im IE(Versionen 9, 10, 11) es ist gleich 'windowName'.
Kann mir jemand erklären, warum? Ich brauche eine Lösung für immer window.name = ''
wenn ich zur Website C. kann ich nicht windows verwenden.öffnen Sie in Website B auf Website öffnen C, ich Fenster.Lage.
Quelle codiert Hinzugefügt:
index.html (Standort A)
<!DOCTYPE html>
<html>
<title>Page A</title>
<head>
<script>
function test2(){
window.open("index2.html","Some window name","width=500,height=500");
}
</script>
</head>
<body>
<input type="button" onClick="test2();">
</body>
</html>
index2.html (Standort B)
<!DOCTYPE html>
<html>
<title>Page B</title>
<head>
<script>
document.write("initial window name: [" + window.name + "]<br/><br/>");
window.name=""; //we set it to empty string
document.write("after we set window.name to empty string: [" + window.name + "]"); //all fine in all browsers, shows nothing
document.location= 'index3.html';
</script>
</head>
<body>
</body>
</html>
index3.html (Standort C)
<!DOCTYPE html>
<html>
<title>Page C</title>
<head>
<script>
document.write("initial window name: [" + window.name + "]"); //OK in Firefox (shows nothing). Not OK in IE, shows "Some window name"
</script>
</head>
<body>
</body>
</html>
- Hinzugefügt der source-code, der zeigt, dass das problem und bat für jemanden um eine Behelfslösung. Bitte wieder öffnen.
- Nicht in der Lage, das problem zu reproduzieren (mit verschiedenen Browsern, einschließlich MSIE6), obwohl in meinem Fall, ich setzte die Namen / Aufruf die Umleitung in separate Javascript-Aufrufe eher als synchron - tut es aber trotzdem passieren, wenn man sich auf Dokument ändern.Lage über eine setTimeout nach der änderung der Namen?
- Auf IE (alle Versionen 9-11) auf Seite C es zeigt immer noch Fenster.name = 'Einige Fenster-name', nach dem hinzufügen von etwas, wie auf Seite B: setTimeout(doRedirect, 10000); Bitte beachten Sie, dass ich nur Zugriff auf die Seite B code, also Seite A und Seite C kann ich nicht ändern, diese zu lösen.
- Ich kann bestätigen, dass auf der Seite Ein: Fenster.name = "Einige Fenster-name"; - Dokument.location="index2.html"; statt der Fenster.open() ist das Problem Weg. Bitte beachten Sie, dass ich nur Zugriff auf die Seite B code, also Seite A und Seite C kann ich nicht ändern, diese zu lösen.
- Ich erlebt haben das gleiche Problem im IE11. Ich denke, es liegt an der Art, wie Internet Explorer schafft es die Registerkarten intern. Meine tests haben gezeigt, dass nach dem ändern der name-Eigenschaft des Fensters, in das Dokument, wenn die URL auf der Registerkarte änderungen, DH wieder behauptet, der ursprüngliche name es angegeben, um die name-Eigenschaft. Darüber hinaus, wenn Sie kopieren einen Reiter, der IE re-use tabs, die Sie zuvor geschlossen! Ich habe festgestellt, dass dies der Fall ist, wie tabs, die ich vorher benannt und geschlossen hatte, erschien wieder beim duplizieren von tabs (Strg+K). Dies geschieht auch mit Anker mit dem Ziel "_blank".
Du musst angemeldet sein, um einen Kommentar abzugeben.
Laut der MSDN-Dokumentation, die
name
- Eigenschaft ist änderbar:http://msdn.microsoft.com/en-us/library/ie/ms534187%28v=vs.85%29.aspx
Habe ich versucht zu ändern
name
Eigenschaft, und es funktioniert im IE9:http://jsfiddle.net/Guffa/5cBBy/1/
Ich auch versucht, es zu ändern, um eine leere Zeichenfolge, und das funktioniert:
http://jsfiddle.net/5cBBy/2/
So, es ist wahrscheinlich etwas falsch mit Ihrem code.
Ich hatte das gleiche problem und fand heraus, dass Sie brauchen, um benennen Sie das Fenster, NACHDEM Sie das neue Fenster.Lage. Das hat für mich!