Zur Navigation

Skript auf ein bestimmtes Element anwenden

1 Sabine1 (Gast)


Hallo Jörg,
neulich bin ich auf das folgende Skript gestoßen: http://www.dynamicdrive.com/dynamicindex5/scrolltotoplink.htm
dieses habe ich auch erfolgreich in eine Seite eingebaut: http://nirvana.bplaced.net/Test/
der html-Code für den Link lautet:
<a href="javascript:dd_scrolltotop()">zum Seitenanfang</a>
nun möchte ich es aus Sicherheitsgründen zu haben, dass sowohl kein Inline-Skript verwendet wird und auch kein eval() oder Ähnliches.
Daher möchte ich den Code für den Link abändern und das Skript dementsprechend anpassen. Dazu habe ich folgendes gefunden: https://developer.chrome.com/extensions/contentSecurityPolicy#JSExecution
habe dann auch versucht, dies für mein Beispiel umzusetzen, aber es funktioniert leider nicht. Siehe hier: http://nirvana.bplaced.net/Test/index2.html
könntest du mir bitte erneut helfen und mir mitteilen, wie das Ganze korrekt lauten muss?
Am alleraller liebsten wäre mir eine Lösung ohne Button im html-Code, sondern einfach ein Link. Aber das muss nicht sein.

04.12.2017 09:26

2 Jörg Kruse

Das Script sollte bereits im <head> eingebunden werden:

<head>
   <!-- ... -->
   <script src="js/btt.js"></script>
</head>

Hier braucht es auch noch eine Anpassung:

document.addEventListener('DOMContentLoaded', function () {
  document.querySelector('button').addEventListener('click', clickHandler);
  main();
});

Für clickHandler muss noch die entsprechende Funktion angegeben werden, die ausgeführt werden soll. Um noch das Argument duration mitgeben zu können, würde ich hier auch eine anonyme Funktion verwenden:

document.addEventListener('DOMContentLoaded', function() {
  document.querySelector('button').addEventListener('click', function() {
    dd_scrolltotop(500);
  });
});

Am alleraller liebsten wäre mir eine Lösung ohne Button im html-Code, sondern einfach ein Link. Aber das muss nicht sein.

Damit nicht alle Links beim Klick diese Aktion auslösen, würde ich dem betreffenden Link noch eine ID verpassen:

<a id="up">zum Seitenanfang</a>

Dann kannst du den Selektor in querySelector() entsprechend anpassen:

querySelector('a#up')

04.12.2017 10:21 | geändert: 04.12.2017 10:25

3 Sabine1 (Gast)

Hallo Jörg,
vielen vielen Dank für deine erneute Hilfe!
Funktioniert wie gewünscht. Danke!
Dir noch einen schönen Tag

04.12.2017 14:52

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]