domFunction

domFunction
Copyright © brothercake.com
For original English text, go to: http://www.brothercake.com
Translated by A.Romanova

Version 1.1 – am 22. April 2005

domFunction ist eine leicht-zu-bedienend Hilfsskript, die anderem DOM Skript erlaubt, vorher window.onload zu laufen; der praktische Vorteil ist javascript muss nicht auf Images oder andere Abhängigkeiten warten, damit das Laden auf jeden Fall zu beenden, – das kann beginnen, sobald DOM bereit ist :^)

Das funktioniert in allen DOM-fähigen Browsern außer Mac/IE5, Safari 1.0, oder KDE <3.2 (aktiviert mit  javascript):

Demos verwenden ein Alarm() Dialog, um die Testfunktion zu zeigen, angerufen seiend, während ein großes BMP Image im Vordergrund lädt. Wenn Skript (oder diese Script) nicht unterstützt wird, wird die Alarm () nicht geschehen.

Bekommen Sie das Skript

Download zipfile [2K] , entpacken Sie das in Ihrem Seite-Verzeichnis und schließen Sie das Skript auf Ihrer Seite ein – das kann überall funktionieren, aber wenn es sich auf andere Funktionen aufrufen soll,  muss nach ihnen in den Quellcode zu kommen:

<!-- domFunction constructor by brothercake - http://www.brothercake.com/ --> <script type="text/javascript" src="domFunction.js"></script>

Dann verwenden Sie den Objekt- Konstruktor, um die individuellen Funktionen zu definieren. Sie können entweder eine genannte Funktion nennen:

var foobar = new domFunction(myFunction);

Oder schreiben Sie eine anonyme Funktion direkt innerhalb des Konstruktors:

var foobar = new domFunction(function() {  //code ... });

Die Funktion wird aufgerufen, wenn DOM bereit ist (bestimmt durch die Existenz von getElementsByTagName Methode und die Anwesenheit von  <body> Element; hier besteht die Idee wie man die DOM Methoden sicher verwenden kann, einschließlich das Bilden und Anhängen der neuen Elementen zu <body>).

Sie können das eigentlich wie eine reguläre onload Funktion behandeln, außer dass – wenn Sie dabei sind irgendwelche vorhandenen HTML-Elemente mit Ausnahme von Körper zu manipulieren (z.B., lesen oder anhängen an), Sie müssen auch diejenigen Elemente prüfen, bevor Ihrer Schrift aufgerufen wird.

Dafür diesen Zweck nimmt der Konstrukteur ein optionales zweites Argument – ein Objekt-Symbol, das die Elemente oder Sammlungen definiert, zuerst sollte die Schrift geprüft werden, bevor die Funktion versuchen aufzurufen:

var foobar = new domFunction(function() {  //code ... }, { 'poster' : 'id', 'h1' : 'tag' });

Jedes Name/Wert-Paar sollte auch sein:

  • ID eines Elements, gefolgt vom “id” Wert, damit zu prüfen, ob dieses Element wirklich besteht; oder
  • der Tag-Name eines Elements, gefolgt vom “tag”  Wert, um zu prüfen, ob diese Sammlung irgendwelche Mitglieder hat.

So, was wurde mit domReady geschieht?

domReady ist der ursprüngliche Verfahrenscode, wovon domFunction Konstruktor abgeleitet wurde. Eigentlich ist derselbe Code, aber mit einer verschiedenen Struktur, noch einfache aufgrund dieses Unterschiedes, die Browser-Ausnahmen bestehen nicht mehr:

Aber domReady ist nicht so ordentlicher und leicht zu bedienen wie domFunction – letzteres wurde entworfen, wie ein Massengebrauch verschachtelte Helfer-Schrift, wo domReady wirklich ein Machbarkeitsnachweis war. Obwohl der Verlust von einigen Browsern unglückselig in gewisser Hinsicht ist, kann es in einem anderen nützlich sein – da diese noch  unter das Bilden sich befindet, müssen Sie häufig das manuell ausnehmen…

Doch, wenn Sie diese Formen unterstützen müssen, gibt es hier der ursprüngliche Code:

Kredite

Die Idee ist sehr einfach und der Code sehr kurz, aber es ist durch sehr viel Zwicken und Raffinieren gewesen, um zu diesem stabilen Punkt zu kommen, und ich bin verdanken zu denjenigen, die zum Thread an CodingForums.com beigetragen haben, in dem ich ursprünglich diese Technik vorgeschlagen habe.

Ich bin besonders dankbar zu einem Mitglied, fci, wessen Idee wurde den Code als ein OO Konstruktor umstrukturieren. Ich ziehe meinen Hut vor Bruno Torres, wessen E-Mail-Feedback für Invasion of the Body Switchers starten erstens die Entwicklung dieser Technik.