JavaScript Script versagt bei mehrgliedriger URL

Moorleiche

Ensign
Registriert
Sep. 2005
Beiträge
152
Hi,

eigentlich sollte der Thread-Titel "Javascript funktioniert nur bei Haupt-URL" lauten, aber irgendwie ist das dem System nicht aussagekräftig genug. :eek::eek:

Ich habe ein kleines "Problem" mit einem Java-Script, das ich auf der Seite eines Freundes integrieren soll.

Eines vorweg: Ich möchte hier nicht über den Sinn und Zweck dieses Scriptes diskutieren, derjenige, der das Sagen hat, will es haben und fertig.

Es ist ein Java-Script, das es in einem bestimmten Bereich der Webseite schneien läßt. Das Problem ist, daß es zwar funktioniert, aber nur unter der Haupt-URL. Das heißt, gebe ich http:/ /www.trallala.xyz ein schneit es. Wenn ich nun z.B. auf den "News"-Button klicke, ändert sich die URL durch das verwendete CMS folgendermaßen: http:/ /www.trallala.xyz/index/news/recent. An der Seite an sich ändert sich nichts, da beim Aufrufen der cleanen URL auch sofort die News angezeigt werden. Der Verweis aud das JS ist auch direkt im Quelltext der News integriert.

Hier ist mal das Script:

// Copyright (C) 2008 by Fabian Schlieper
// Schnee v1.2
// http://www.fabi.me/
// Ohne dieses Copyright darf dieser Code nicht verwendet werden!
//

// die ID des HTML-Elements, in dem es schneien soll
var snow_area_id = 'winter';

// maximale Anzahl der sichtbaren Schneeflocken
var snow_flake_count = 50;

// die verschiedenen Farbe, die die Schneeflocken haben sollen
var snow_colors = new Array('#AAAACC','#DDDDFF','#CCCCDD','#F3F3F3','#F0FFFF');

// die Schriftarten, aus denen die Schneeflocken bestehen sollen
var snow_fonts = new Array('Arial Black', 'Arial Narrow', 'Times', 'Comic Sans MS');

var snow_char = '*'; // das Zeichen, das als Schneeflocke verwendet wird
var snow_gravity = 0.8; // wie schnell die Schneeflocken fallen
var snow_max_size = 22; // die maximale Schriftgröße einer Schneeflocke
var snow_min_size = 10; // die minimale Schriftgröße einer Schneeflocke

var snow_init_delay = 50; // Verzögerungszeit in Millisekunden, bevor es zu schneien anfängt


// ######################################################################
// HIER ENDET DIE KONFIGURATION. ÄNDERUNGEN IM FOLGENDEN SETZEN JAVSCRIPT-KENNTNISSE VORAUS
// ######################################################################

var snow_init_time = 0;
var snowflakes = new Array();
var snow_area_el = null;

function createSnowflakes()
{
var style = 'position:absolute; top:-' + snow_max_size + 'px; z-index:99;';
for (var i = 0; i <= snow_flake_count; i++)
document.write('<sp' + 'an id="snwflk' + i + '" style="' + style + '">' + snow_char + '</sp' + 'an>');
}

function randInt(range) { return Math.floor(Math.random() * range); }

function initSnow()
{
snow_area_el = document.getElementById(snow_area_id);

// reapeat until we have the snow_area_el
if(!snow_area_el || snow_area_el.offsetWidth <= snow_max_size || snow_area_el.offsetHeight <= snow_max_size) {
// after 5 secs cancel
if(snow_init_time < 5000)
window.setTimeout('initSnow()', 50);

snow_init_time += 50;
return;
}

// offest fix
snow_area_el.style.position = 'relative';

for (var i = 0; i <= snow_flake_count; i++)
{
snowflakes = document.getElementById('snwflk' + i);

snowflakes.size = (randInt(snow_max_size - snow_min_size) + snow_min_size);
snowflakes.posx = -snowflakes.size;
snowflakes.posy = -snowflakes.size;
snowflakes.sink = (snow_gravity * snowflakes.size / snow_min_size);
snowflakes.wobamp = (Math.random() * (snowflakes.size));
snowflakes.wob = 0.0;
snowflakes.wobspeed = (0.03 + Math.random() / 10.0);

snowflakes.style.fontFamily = snow_fonts[randInt(snow_fonts.length)];
snowflakes.style.fontSize = snowflakes.size + 'px';
snowflakes.style.color = snow_colors[randInt(snow_colors.length)];
}

window.setInterval('updateSnow()', 50);
}

function updateSnow()
{
var bl = snow_area_el.offsetLeft;
var bt = snow_area_el.offsetTop;
var bw = snow_area_el.offsetWidth;
var bh = snow_area_el.offsetHeight;
var br = bl + bw;
var bb = bt + bh;

for (var i = 0; i <= snow_flake_count; i++)
{
snowflakes.wob += snowflakes.wobspeed;
var x = snowflakes.posx + (snowflakes.wobamp * Math.sin(snowflakes.wob));
snowflakes.posy += snowflakes.sink;

snowflakes.style.left = Math.round(x) + 'px';
snowflakes.style.top = Math.round(snowflakes.posy) + 'px';

var s = snowflakes.size;
// check bounds
if (snowflakes.posy > (bb - s) || x < bl || x > (br - s))
{
snowflakes.posx = bl + s + randInt(bw - (3 * s));

if(snowflakes.posy < 0)
snowflakes.posy = bt + randInt(bh - 2 * s);
else
snowflakes.posy = bt;
}
}
}

// Schnee initialisieren
createSnowflakes();
window.setTimeout('initSnow()', Math.max(50, snow_init_delay));


Ich bin auch alles andere als der große Java-Script-Guru. Ich hoffe Ihr könnt mir helfen.


Viele Grüße
Moorleiche
 
Hast du auch in den Bodytag im Sinne von <body id="winter"> ?
 
Hi,

ich habe einen Div-Container mit der id="winter" integriert und in diesem funktioniert es ja auch bei der Clean-URL, nur halt nicht mehr, wenn ich die gleiche Seite über den News-Link aufrufe.


GREETZ Moorleiche



Edit: Habe eine Lösung gefunden. Wohl nicht die eleganteste, aber sie funktioniert. Ich habe das Problem einfach umgangen indem ich die Verlinkung des News-Buttons nicht auf die News direkt verweise, sondern wiederum einfach auf die index-Datei, bei der ja auch die News mitgeladen werden.
 
Zuletzt bearbeitet:
Zurück
Oben