Ergänzungsskript

Hallo,
Opera und eine Erweiterung von Firefox bieten die Möglichkeit an, eigene JavaScripts in Seiten mit einzufügen und ggf. damit werden vorhandene Scripts überschrieben.

Da ich nicht so gut in JS bin, aber mich ständig einige Seiten wegen ihre inkompetenten Programmierung nerven, hoffe ich hier die nötige Hilfe zu bekommen. Als Beispiel möchte ich die Otto Seite mal herannehmen, in der ich vielleicht mehrere Artikel vergleichen will und somit die wunderbare Erfindung der TABs nutzen möchte. Doch ist Otto nicht in der Lage, das dem Kunden zu ermöglichen. So kann man nur in ein und dem selben Fenster sich hin und her bewegen - das Vergleichen fällt dabei flach, es sei denn man kopiert alle Atikel mit Bildern …

Meine Gedanke ist nun, per JavaScript die vorhandene Funktion zu manipulieren.
Standartmäßig findet man folgenden Code, der aufgerufen wird:

function goArticle(productid, bundlepage, isHappy55){
if ((!isHappy55) || (isHappy55 == '')){
isHappy55 = 'false';
}
document.articleform.elements["ProductID"].disabled = false;
document.articleform.elements["ProductID"].value=productid;
document.articleform.elements["BundlePage"].disabled = false;
document.articleform.elements["BundlePage"].value=bundlepage;
document.articleform.elements["isHappy55"].value = isHappy55;
if (document.articleform.elements["ListSize"]) { document.articleform.elements["ListSize"].disabled = false; }
document.articleform.action="http://www.otto.de/is-bin/INTERSHOP.enfinity/WFS/Otto-OttoDe-Site/de\_DE/-/EUR/OV\_DisplayProductInformation-Start;sid=Rl7UjkYq50PGjAFc2cpo5iogjHMyNU2ocdN2ef9BFEFxwKJfwH5\_4kvy3ExJaJFI-og=";
document.articleform.submit();
}

Hier im Forum habe ich im Archiv gelesen, dass man mit der folgenden Funktion in JS neue Fenster öffnen kann:

newWin = window.open("","Fenster1","width=310,height=400,left=0,top=0");
document.articleform.target="Fenster1";

Liest man noch die SID (Session ID) aus der GET Variable aus und fügt es in den Action-Code ein, so müsste man doch ein Artikel in ein neuem Fenster öffnen können. Natürlich sollte man ein Counter einfügen (über Cookies), damit man für jeden Artikel ein neues - und nicht immer das selbe - Fenster zuteilt.

Denkt ihr das wäre machbar? Kann mir jemand vielleicht ein (eventuell auch unsauberen) Code schreiben? Ich kann leider so gut wie kein JS und wäre für jede Hilfe dankbar.

Gruß DuAK007

Hallo duak007,

Liest man noch die SID (Session ID) aus der GET Variable aus
und fügt es in den Action-Code ein, so müsste man doch ein
Artikel in ein neuem Fenster öffnen können. Natürlich sollte
man ein Counter einfügen (über Cookies), damit man für jeden
Artikel ein neues - und nicht immer das selbe - Fenster
zuteilt.

Denkt ihr das wäre machbar? Kann mir jemand vielleicht ein
(eventuell auch unsauberen) Code schreiben? Ich kann leider so
gut wie kein JS und wäre für jede Hilfe dankbar.

Dann mach es doch einfach mal: Lass bei der Neudefinition der Funktion goArticle() die letzte Zeile mit dem Submit weg. Und rufe statt der vorletzten Zeile die Open-Funktion statt mit einem leeren String als erstem Übergabeparameter mit dem String auf, der in der Originalfunktion als neue Action angedacht war. Bau dir einen Counter und bastele dir den an den zweiten Übgabeparameter sowie an den Rückgabewert dran, also:

window[‚newWin‘ + counter] = window.open(„http://www.otto.de/is-bin/INTERSHOP.enf…“,
„Fenster“ + counter,
„width=310,height=400,left=0,top=0,resizable=yes“);
counter++;

Gruß Gernot

window[‚newWin‘ + counter] =
window.open(„http://www.otto.de/is-bin/INTERSHOP.enf…“,
„Fenster“ + counter,

„width=310,height=400,left=0,top=0,resizable=yes“);
counter++;

Hi,
inzwischen hat Otto selbst schon die Seite angepasst und die Links nicht mehr mit JS realisiert, weshalb ich es jetzt nicht mehr testen kann. Aber trotzdem habe ich noch ein paar Fragen, falls ich mal wieder eine solche Seite vorfinden sollte:

  • window.open öffnet ja neue Fenster. Kann man auch das für neue Tabs realisieren?
  • der Counter wird doch so nur in der aktuellen Seite aufgerufen, oder? Wie übergibt man diesen Counter weiter? In die URL als weitere GET Variable? Wie liest man dann diese mit JS aus? Oder sogar noch besser in Cockies? Oder kann man sogar eine Art _blank angeben, so dass man die JS Problematik gar nicht erst hat?

Gruß DuAK007

Hallo DuAK007,

inzwischen hat Otto selbst schon die Seite angepasst und die
Links nicht mehr mit JS realisiert, weshalb ich es jetzt nicht
mehr testen kann. Aber trotzdem habe ich noch ein paar Fragen,
falls ich mal wieder eine solche Seite vorfinden sollte:

  • window.open öffnet ja neue Fenster. Kann man auch das für
    neue Tabs realisieren?

Nein.

  • der Counter wird doch so nur in der aktuellen Seite
    aufgerufen, oder? Wie übergibt man diesen Counter weiter? In
    die URL als weitere GET Variable? Wie liest man dann diese mit
    JS aus? Oder sogar noch besser in Cockies? Oder kann man sogar
    eine Art _blank angeben, so dass man die JS Problematik gar
    nicht erst hat?

Nein, du musst immer einen eindeutigen Fensternamen erzeugen, wenn du jedesmal ein neues Fenster öffnen willst. Dafür kannst du aber auch die clientseitig seit Silvester 1969 (24:00 Uhr) verstrichenen Millisekunden „new Date().getTime()“ verwenden.

Gruß Gernot