Hi,
aufgrund einer Anregung aus dem Archiv habe ich versucht, mit Hilfe von JavaScript einer Gruppe von Artikeln beizubringen, bei ihrer Anzeige selbständig das sie umgebende Frameset zu generieren (für Treffer aus Suchmaschinen usw.).
Die Netscape-Variante klappt auch tadellos. Die Variante für den MSIE dagegen produzieren eine Fehlermeldung, die meine (bescheidenen) Kenntnisse der JavaScript-Objekthierarchie übersteigt.
Kann mir vielleicht jemand erklären, wie ich die Lösung so anpassen kann, daß sie auch im MSIE funktioniert? (MSIE 4 und 5 produzieren die unten angegebene Fehlermeldung.)
------------
Das Skript: (wie gesagt, hier aus dem Archiv - vielleicht erkennt der Autor es ja wieder ...)
function createFrameSet ()
{
/* Wird das Dokument außerhalb seines normalen Frames angezeigt? */
if ( this.document == top.document
top.location.host != this.location.host)
{
/* URL der übergeordneten Ebene berechnen */
var ebene_1 = location.pathname.substring (0, location.pathname.lastIndexOf ('/') );
var ebene_2 = location.pathname.substring (0, ebene_1.lastIndexOf ('/') + 1);
var pathprefix = location.protocol + '//' + location.host + ebene_2;
/* neues Frameset-Dokument generieren */
var doctitle = document.title;
document.clear ();
document.open ("text/html");
document.writeln ('<html>');
document.writeln ('<head><title>AutoFramed: ' + doctitle + '</title></head>');
document.writeln ('<frameset rows="*,63" BORDER=0>');
document.writeln (' <frame src="' + top.location.href + '" name=textWindow>');
document.writeln (' <frame src="' + pathprefix + 'menu.htm" name=subMenu MARGINWIDTH=1 NORESIZE SCROLLING=NO>');
document.writeln ('</frameset>');
document.writeln ('</html>');
document.close ();
return true;
}
return false;
}
function is_msie ()
{
/* Ist das ein Microsoft-Browser? */
return (navigator.appName == "Microsoft Internet Explorer");
}
function msieFraming ()
{
if (is_msie ())
{
if (createFrameSet ())
{
window.setTimeout ('top.frames["content"].location.href = ' + '"' + top.location.href + '";', 10);
}
}
}
function netscFraming ()
{
if (! is_msie ())
createFrameSet ();
}
msieFraming ();
------------
Die Einbindung:
<SCRIPT LANGUAGE="JavaScript1.1" SRC="../../../include.js"></SCRIPT>
innerhalb von <HEAD>..</HEAD>
und
<BODY onLoad="netscFraming(2)">
(was aber bei MSIE nichts bewirken sollte).
------------
Die Fehlermeldung:
Zeile 1, Zeichen 1: "top.frames.content.location" ist kein Objekt.