Aufruf einer anderen HTML-Datei ohne <a ...
prof
- programmiertechnik
Im Anschluss an eine Flashdetection möchte ich sofort (ohne Bestätigung durch Klick auf einen Link) eine flashfreie HTML-Datei aufrufen!
(Wie) geht so etwas?
Danke Prof
Hi,
Im Anschluss an eine Flashdetection möchte ich sofort (ohne Bestätigung durch Klick auf einen Link) eine flashfreie HTML-Datei aufrufen!
warum? Ist die vorhandene Seite für den Besucher nicht gut genug?
(Wie) geht so etwas?
Wie machst Du denn diese ominöse Flashdetection - und warum eigentlich?
Cheatah
Flashseite ist super und nicht mal sehr speicherintensiv. Aber es gibt leider (noch)zu viele Modemsurfer, die bei dem ersten Anzeichen von Flash sofort die Panik kriegen und die Seite zu machen.
Flashdetection ist lehrbuchmäßig und funktioniert. In der fünftletzten Zeile kann man den Non-Flash-Verweis einfügen!
Prof
<script language="JavaScript" type="text/javascript">
<!--
// -----------------------------------------------------------------------------
// Globale Variablen
// Erforderliche Hauptversion von Flash
var requiredMajorVersion = 6;
// Erforderliche Unterversion von Flash
var requiredMinorVersion = 0;
// Erforderliche Flash-Revision
var requiredRevision = 0;
// Die unterstützte JavaScript-Version
var jsVersion = 1.0;
// -----------------------------------------------------------------------------
// -->
</script>
<script language="VBScript" type="text/vbscript">
<!-- // Visual Basic-Hilfsprogramm ist zur Ermittlung der Versionsinformationen des Flash Player ActiveX-Steuerelements erforderlich
Function VBGetSwfVer(i)
on error resume next
Dim swControl, swVersion
swVersion = 0
set swControl = CreateObject("ShockwaveFlash.ShockwaveFlash." + CStr(i))
if (IsObject(swControl)) then
swVersion = swControl.GetVariable("$version")
end if
VBGetSwfVer = swVersion
End Function
// -->
</script>
<script language="JavaScript1.1" type="text/javascript">
<!-- // Client-Browsertyp ermitteln
var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
jsVersion = 1.1;
// JavaScript-Hilfsprogramm ist zur Ermittlung der Versionsinformationen des Flash Player Plug-Ins erforderlich
function JSGetSwfVer(i){
// NS/Opera-Version >= 3 auf Flash-Plug-In im Plug-In-Array prüfen
if (navigator.plugins != null && navigator.plugins.length > 0) {
if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
descArray = flashDescription.split(" ");
tempArrayMajor = descArray[2].split(".");
versionMajor = tempArrayMajor[0];
versionMinor = tempArrayMajor[1];
if ( descArray[3] != "" ) {
tempArrayMinor = descArray[3].split("r");
} else {
tempArrayMinor = descArray[4].split("r");
}
versionRevision = tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0;
flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
} else {
flashVer = -1;
}
}
// MSN/WebTV 2.6 unterstützt Flash 4
else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
// WebTV 2.5 unterstützt Flash 3
else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
// älteres WebTV unterstützt Flash 2
else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
// Ermittlung in allen anderen Fällen nicht möglich
else {
flashVer = -1;
}
return flashVer;
}
// Wenn der Funktionsaufruf ohne Parameter erfolgt, gibt diese Funktion einen Gleitkommawert zurück,
// bei dem es sich entweder um die Flash Player-Version oder um 0.0 handelt.
// Beispiel: Flash Player 7r14 gibt 7.14 zurück.
// Wenn reqMinorVer, reqMajorVer, reqRevision aufgerufen wird, wird 'true' zurückgegeben, sofern diese bzw. eine höhere Version verfügbar ist
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
{
reqVer = parseFloat(reqMajorVer + "." + reqRevision);
// Versionen rückwärts durchlaufen, bis die neueste Version gefunden wird
for (i=25;i>0;i--) {
if (isIE && isWin && !isOpera) {
versionStr = VBGetSwfVer(i);
} else {
versionStr = JSGetSwfVer(i);
}
if (versionStr == -1 ) {
return false;
} else if (versionStr != 0) {
if(isIE && isWin && !isOpera) {
tempArray = versionStr.split(" ");
tempString = tempArray[1];
versionArray = tempString .split(",");
} else {
versionArray = versionStr.split(".");
}
versionMajor = versionArray[0];
versionMinor = versionArray[1];
versionRevision = versionArray[2];
versionString = versionMajor + "." + versionRevision; // 7.0r24 == 7.24
versionNum = parseFloat(versionString);
// ist die Hauptrevision >= angeforderte Hauptrevision UND die Nebenversion >= angeforderte Nebenversion
if ( (versionMajor > reqMajorVer) && (versionNum >= reqVer) ) {
return true;
} else {
return ((versionNum >= reqVer && versionMinor >= reqMinorVer) ? true : false );
}
}
}
return (reqVer ? false : 0.0);
}
// -->
</script>
</head>
<BODY text=white vLink=black aLink=black link=black bgColor=black>
<br><br><br><br><br><br>
<center>
<script language="JavaScript" type="text/javascript">
<!--
var hasRightVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
if(hasRightVersion) { // sofern eine akzeptable Version ermittelt wurde
var oeTags = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'
+ 'width="400" height="331"'
+ 'codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab">'
+ '<param name="movie" value="index.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" />'
+ '<embed src="index.swf" quality="high" bgcolor="#ffffff" '
+ 'width="400" height="331" name="index" align="middle"'
+ 'play="true"'
+ 'loop="false"'
+ 'quality="high"'
+ 'allowScriptAccess="sameDomain"'
+ 'type="application/x-shockwave-flash"'
+ 'pluginspage="http://www.macromedia.com/go/getflashplayer">'
+ '</embed>'
+ '</object>';
document.write(oeTags); // Flash-Film einbetten
} else { // Flash ist veraltet, oder das Plug-In wurde nicht ermittelt
var alternateContent = 'Alternativer HTML-Inhalt sollte hier platziert werden.'
+ 'Für diesen Inhalt ist der Macromedia Flash Player erforderlich.'
+ '<a href=html/index2.htm><font color="white">weiter</a>';
document.write(alternateContent); // Nicht aus Flash stammenden Inhalt einfügen
}
// -->
</script>
Hallo Prof,
Ist dir klar, dass ein User, der Javascript deaktiviert hat, bzw. ein Such-Robot auf deiner Seite keinerlei Content vorfindet?
Du solltest auf jeden Fall noch einen <noscript>-Bereich einfügen, in dem du auf die Flash-freie Seite verweist.
Zu deinem eigentlichen Problem: Das http://de.selfhtml.org/javascript/objekte/location.htm#allgemeines@title=location-Objekt sollte dir weiterhelfen.
Ciao,
DeWitt
Ist dir klar, dass ein User, der Javascript deaktiviert hat, bzw. ein Such-Robot auf deiner Seite keinerlei Content vorfindet?
Du solltest auf jeden Fall noch einen <noscript>-Bereich einfügen, in dem du auf die Flash-freie Seite verweist.
Nein, das war mir in der Deutlichkeit nicht klar und ich werde sofort etwas unternehmen!
Dann kann ich mir das location-Objekt wohl erst mal sparen!
Danke - Prof
Hallo Prof,
Dann kann ich mir das location-Objekt wohl erst mal sparen!
Um die direkte Weiterleitung bei aktivem JS zu erzielen, nein.
Mit freundlichem Gruß
Micha
Erst mal danke!
Habe den Refresh ausgeschaltet und überlasse dem User die freie Wahl zwischen Flash und HTML. Leider, denn er weiß nicht, was ihm beim Flash entgeht ...
:-( Prof
hi,
Flashseite ist super und nicht mal sehr speicherintensiv. Aber es gibt leider (noch)zu viele Modemsurfer, die bei dem ersten Anzeichen von Flash sofort die Panik kriegen und die Seite zu machen.
Es gibt auch genügend User, die Falsh aus anderen Gründen schlicht und einfach nicht _mögen_, und eine HTML-Umsetzung der Inhalte bevorzugen würden.
Flashdetection ist lehrbuchmäßig und funktioniert. In der fünftletzten Zeile kann man den Non-Flash-Verweis einfügen!
[mehrere Bildschirmseiten langes Javascript-Gewusel]
Und diesen ganzen Blödfug zu laden, magst du den Modembenutzern zumuten?
gruß,
wahsaga
Hallo.
Flashseite ist super und nicht mal sehr speicherintensiv. Aber es gibt leider (noch)zu viele Modemsurfer
Der sogenannte Flashenhals.
MfG, at
Grundlage für Zitat #397.
Hi,
Im Anschluss an eine Flashdetection möchte ich sofort (ohne Bestätigung durch Klick auf einen Link) eine flashfreie HTML-Datei aufrufen!
(Wie) geht so etwas?
einfachere Lösung: baue eine HTML-Seite, die per Meta-Refresh 1s nach dem Aufruf auf eine andere weiterleitet, und binde dort eine winzige, unsichtbare Flash-Animation ein, die umgehend nachdem sie geladen wurde zu einer anderen Seite weiterleitet. Ist Flash verfügbar leitet die Flash-Animation z. B. zu einer "flash.htm" weiter, bevor es das Meta-Refresh tut, ist Flash nicht verfübar, wird bei allen in der Praxis verwendeten Browsern nach 1s zu einer "html.htm" weitergeleitet, die für Flash-lose Besucher da ist. Ein Modem-User der Flash installiert hat sieht dann aber trotzdem die Flash-Version - ich würde dir dazu raten, entweder eine Auswahlmöglichkeit anzubieten, oder Flash gleich wegzulassen, das grauenvoll und uneinheitlich zu bedienen ist und mangelhafte Barrierefreiheit aufweist.
Schöne Grüße
Julian
Hi,
einfachere Lösung: baue eine HTML-Seite, die per Meta-Refresh 1s nach dem Aufruf auf eine andere weiterleitet
sorry, aber das ist Unsinn.
dieser meta-refresh kann im Browser deaktiviert sein und Suchmaschinen mögen sowas gar nicht.
freundliche Grüße
Ingo
Moin!
einfachere Lösung: baue eine HTML-Seite, die per Meta-Refresh 1s nach dem Aufruf auf eine andere weiterleitet
sorry, aber das ist Unsinn.
dieser meta-refresh kann im Browser deaktiviert sein und Suchmaschinen mögen sowas gar nicht.
Beweise? Dass man in Browsern alles abschalten kann - ok, manche Leute tun das. Aber dass Suchmaschinen das nicht mögen, wäre mir neu.
- Sven Rautenberg
Hello out there!
meta-refresh […] Suchmaschinen mögen sowas gar nicht.
dass Suchmaschinen das nicht mögen, wäre mir neu.
Im Märchen wird das so erzählt. Nur ein Märchen?
See ya up the road,
Gunnar
Hi,
dieser meta-refresh kann im Browser deaktiviert sein und Suchmaschinen mögen sowas gar nicht.
Beweise? Dass man in Browsern alles abschalten kann - ok, manche Leute tun das. Aber dass Suchmaschinen das nicht mögen, wäre mir neu.
mit einem Beweis kann ich leider nicht dienen, weil es mich noch nicht interessiert hatte, diese oft gelesene Aussage durch einen Praxistest zu verifizieren. Aber die Logik sollte hier doch eigentlich ausreichen: Suchmaschinen, die relavante Ergebnisse präsentieren wollen, wären schlecht beraten, eine Seite, die (in den meisten Fällen) nur eine Sekunde lang angezeigt wird, zu indizieren, oder?
freundliche Grüße
Ingo
Moin!
dieser meta-refresh kann im Browser deaktiviert sein und Suchmaschinen mögen sowas gar nicht.
Beweise? Dass man in Browsern alles abschalten kann - ok, manche Leute tun das. Aber dass Suchmaschinen das nicht mögen, wäre mir neu.
Aber die Logik sollte hier doch eigentlich ausreichen: Suchmaschinen, die relavante Ergebnisse präsentieren wollen, wären schlecht beraten, eine Seite, die (in den meisten Fällen) nur eine Sekunde lang angezeigt wird, zu indizieren, oder?
Indizieren vielleicht nicht - das wäre mit dem beabsichtigten Inhalt (Flash-Test und fallweise Weiterleitung) ja auch nicht notwendig.
Aber zu dem Weiterleitungsziel gehen - das kriegen Spider hin. Also spricht sehr wenig gegen Meta-Weiterleitungen aus Suchmaschinensicht. Finde ich zumindest.
- Sven Rautenberg
Hi,
Aber zu dem Weiterleitungsziel gehen - das kriegen Spider hin. Also spricht sehr wenig gegen Meta-Weiterleitungen aus Suchmaschinensicht. Finde ich zumindest.
Prinzipiell würde das stimmen - wenn da nicht so viele Spammer wären, die auch über meta refresh Suchmaschinen austricksen wollten. Zumindest bei einer unmittelbaren weiterleitung, also 0, habe ich schon von einigen Fällen gelesen, die mit solchen Seiten aus dem Index geflogen waren.
freundliche Grüße
Ingo
hi,
Indizieren vielleicht nicht - das wäre mit dem beabsichtigten Inhalt (Flash-Test und fallweise Weiterleitung) ja auch nicht notwendig.
Aber zu dem Weiterleitungsziel gehen - das kriegen Spider hin. Also spricht sehr wenig gegen Meta-Weiterleitungen aus Suchmaschinensicht. Finde ich zumindest.
Dann wird also (vermutlich) nur noch das HTML-Dokument, auch welches weitergeleitet wurde, von den Suchmaschinen indiziert und auch dem Sucher als Ergebnis präsentiert - wer sucht, landet also "immer" beim HTML.
Da frag ich mich dann nur noch, was eigentlich _für_ die Flash-Version der Seite spricht?
scnr,
wahsaga
Hi,
Hi,
einfachere Lösung: baue eine HTML-Seite, die per Meta-Refresh 1s nach dem Aufruf auf eine andere weiterleitet
sorry, aber das ist Unsinn.
dieser meta-refresh kann im Browser deaktiviert sein und Suchmaschinen mögen sowas gar nicht.
es tut mir leid, die Lösung die ich vor 3 Jahren noch verwendete sah natürlich anders aus: Lass den Meta-Refresh weg und baue eben diese Flash-Animation, die die Weiterleitung verursacht, direkt auf die HTML-Seite. Damit wären beide von Ingo genannten Probleme erledigt.
Schöne Grüße
Julian
Hallo,
Im Anschluss an eine Flashdetection möchte ich sofort (ohne Bestätigung durch Klick auf einen Link) eine flashfreie HTML-Datei aufrufen!
(Wie) geht so etwas?
Du kannst Flash-Objekte auch anders ins HTML einbetten, siehe http://de.selfhtml.org/html/multimedia/objekte.htm#flash (weiter unten im Abschnitt, nicht der oberste Teil), http://www.alistapart.com/articles/flashsatay sowie http://aktuell.de.selfhtml.org/artikel/programmiertechnik/liveconnect/index.htm#html_flash (bei letzerem geht's um einiges mehr als bloß die Einbettung, es steht aber auch etwas dazu drin).
Wenn Du Flash auf die obige Weise einbettest, führt das dazu, dass Du dann den Alternativinhalt direkt angeben kannst, der angezeigt werden soll, falls Flash nicht aktiv ist. Geht ganz ohne JavaScript und ist sehr einfach (folgendes Beispiel ist _nicht_ auf den Standard-Macromedia-Code bezogen und funktioniert damit _nicht_):
<object ...>
<param ...>
...
<param ...>
<p>Alternativer Inhalt</p>
</object>
Mit der Methode treten unter ganz raren Umständen Browserprobleme auf, dies wurde im Archiv ausführlich diskutiert. Meiner persönlichen Einschätzung nach dürfte der Anteil an Surfen mit einem fehlerhaft installiertem IE5 und/oder einem anderen Problembrowser (IIRC gab es einige spezielle Opera-Versionen unter Linux, die die Methode nicht mochten) heutzutage gegen Null gehen, von daher würde ich persönlich zu dieser Methode raten. Das Streaming-Problem im IE ist natürlich weiterhin vorhanden, der oben von mir verlinkte englische Artikel erklärt aber, wie man das umgeht.
Viele Grüße,
Christian