• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[SCRIPTSUCHE] Suche ein Script, welches ein anderes Script löschen kann

Dr. Zecke

New member
Hi

Ich benötige ein Java Script, mit dem ich ein anderes Java Script im selben Quelltext abschalten kann. Genauer gesagt soll ein bestimmtes Java Script garnicht erst geladen werden.

Klar, normalerweise muss man dafür einfach im HTML-Gerüst das gewünschte Script entfernen. Mein Problem ist allerdings, dass ich aus einem iframe heraus agieren muss und keinen Zugriff auf die Hauptseite habe.

Keine Sorge, ich habe nix schädliches vor oder dergleichen. Ich muss lediglich innerhalb von ebay ein script deaktivieren, was meine fancybox auf der Verkaufsseite blockiert.

Könnt ihr mir helfen damit? Leider kann ich nicht JS coden.

greetz

- - - Aktualisiert - - -

In CSS gibt es ja den "!important"-Befehl, um einen Wert zu überschreiben.

Gibt es sowas ähnliches auch in Java Script?
Dann könnte ich einfach die Funktion, die mir Probleme macht, mit einer leeren Funktion ersetzen, somit würde die Seite dann wieder richtig funktionieren..
Also quasi ein neues Script einfügen, was eine Funktion aus dem anderen script überschreibt.
 
Einfach chronologisch folgend die selben Funktionsnamen wiederverwenden. Zumindest FF und IE machen das klaglos.
Aber ich rate zum Studium der eBay Bedingungen, ob das zulässig ist, was du da tust!

HTML:
<!DOCTYPE html>
<html>
  <head>
    <title>doppelte Funktionsnamen</title>
    <meta charset="utf-8">
  </head>
  <body>
    <script>

function test() {
	alert('A');
}
function test() {
	alert('B');
}
test();

    </script>
  </body>
</html>
Weiterer Hinweis: ich weiß nicht, ob dieses Browserverhalten spezifiziert ist. Falls nicht könnte diese Technik irgendwann in irgendeinem Browser zu irgendeiner ganz ungünstigen Zeit zu unerwartetem Verhalten führen.
 
Also ich meinte jetzt allerdings den Fall, ob man das über eine separate .js machen kann.

Also in "a.js" steht:

function test() {
alert('A');

In "b.js" steht

function test() {
alert('B');

----

Ist für die Ausgabe dann einfach entscheidend, welches Script zuerst bzw. zuletzt geladen wurde?
Das Problem ist nämlich, dass die .js, die mir ebay in jedes Angebot reinballert, nach meiner .js geladen wird.
Einzige Möglichkeit wäre dann vllt ein Funktions-Timer?

Ich kenne die Ebay Bedingungen sehr gut. Man darf als Top-Verkäufer Scripts benutzen, solange man bestimmte Regeln einhält. Die breche ich damit nicht.
Wenn du es genau wissen willst, die .js file von ebay ist jQuery v1.7, welche ich deaktivieren muss, da ich mein eigenes jQuery drin habe. Beides zusammen funktioniert nicht.
 
If for some reason two versions of jQuery are loaded (which is not recommended), calling $.noConflict( true ) from the second version will return the globally scoped jQuery variables to those of the first version.

Also folgende Situation:

innerhalb des Iframes wird mein JQuery (jquery1.js) geladen. Da könnte ich jetzt so eine noConflict Funktion setzen.
---

Außerhalb des iframes (auf den ich keinen! Zugriff habe), wird anschließend jquery2.js geladen.
So wie ich den Text verstehe, muss man aber genau DORT diese noConflict Funktion setzen.

Was tun, sprach Zeus
 
Wie gesagt, ich kann kein js coden, demnach ist das für mich alles sehr schwierig nachzuvollziehen, im Moment.

Also was ich jetzt in Erfahrung gebracht habe (danke google) ist, dass man komplett alle scripts, die mit jquery arbeiten irgendwie umprogrammieren muss.

Erst dann zeigt noconflict Wirkung, ist das korrekt?
Kann ich als Laie meine scripts die ich einfach übernommen habe für meine Seite so umschreiben, dass sie mit noconflict kompatibel sind? Oder muss ich dafür erst js studieren?

Also da ich viele plugins auf der seite habe (mehr als 6000 Zeilen code innerhalb dieser plugins), wird das wohl bissl ungünstig mitm umschreiben.

Tut mir leid, wenn ich das nicht richtig verstanden haben sollte, ich gebe mir hier schon die größte Mühe.
 
in dem stack beitrag ist ein beispiel. demnach holt man sich jquery einfach in eine variable und "spricht" es dann einfach anders an. hast du das mal nachempfunden?
 
1) wenn deine seite als iframe eingebunden ist, interessiert dich doch überhaupt nicht, was in der hauptseite eingebunden wird.
2) ja, wenn du noconflict bei dir aufrufst, musst du jeden jquery-zugriff der über $ oder jquery geht ändern
3) warum nutzt du dann nicht die version 1.7 die schon bei dir eingebunden ist?
 
So einfach ist es in meinem Fall leider nicht.

Das Problem ist folgendes:
Ich bin Händler auf Ebay und habe mir vor einiger Zeit ein eigenes Template gebaut, inklusive Java Script Spielerein, wie z.B. eine Fancybox und eine Zoom Funktion.

Diese ganzen Scripts funktionieren ausschließlich mit den files die ich selber implementiere.
Warum das jetzt so ist weiß ich nicht, vermutlich sind die Plugins, die ich verbaut habe nur mit bestimmten modifizierten Versionen von jquery kompatibel oder was weiß ich.

Das alles ist auch eigentlich nicht weiter schlimm, weil das Seltsame an der Geschichte ist, mein Template funktioniert an sich perfekt.

Es gibt in Firefox einen sehr seltsamen Fehler (ich konnte ihn bei sonst keinem Browser reproduzieren), bei dem, wenn ich die Seite öffne, folgendes passiert.
Beim ersten Laden vermischen sich die css und js dateien vom parent document und dem iframe zusammen. Das führt dazu, dass das iframe (welches mein Template beinhaltet), nicht korrekt dargestellt wird und die ganzen jquery Funktionen nicht laufen.

Beim 2. Mal laden der Seite wird der iframe richtig geladen. Sprich, die Darstellung und alle Scripts funktionieren, weil sich dann das iframe und das parent document nicht mehr in die Quere kommen. (das ist jedenfalls meine Vermutung)

Folgender Link führt auf ein meiner Angebote (soll natürlich keine Werbung sein), auf dem dieser Fehler existent ist:

Template Beispiel

Mir konnte in einem anderen Thread, hier im Forum, leider niemand etwas zu diesem Fehler sagen. Deshalb muss ich jetzt eben den Weg gehen, den Code anzupassen, damit das Template mit diesem Fehler "kompatibel" wird.
 
Ich würde da einfach mal bei eBay nachfragen, ob man dieses Verhalten abstellen kann. Ansonsten bleibt dir nicht viel anderes übrig, als die ganzen Scripte auf noconflict umzustellen (wenn du von JS keine Ahnung hast, solltest du ev. jemanden dafür bezahlen).

PS: Ich denke, dass die "vermischte" Version für mobile Geräte gedacht ist und beim FF eBay anscheinend nicht unterscheiden kann, ob dieser auf einem Desktop oder einem Smartphone läuft.
 
Zurück
Oben