| HTML, JavaScript, AJAX und CSS Probleme mit HTML? Netscape oder IE funktionieren nicht so, wie sie sollen? Stellt eure HTML-Fragen hier im Forum und diskutiert eure Probleme mit anderen Entwicklern. |
 |

09-03-2010, 20:53
|
Abraxax
  THE REAL HAXE (Administrator)
|
|
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.621
|
|
IE vs. DOM // domready
Hi zusammen.
Ich habe folgende Seite im Netz gefunden, welche "ein" Problem bzgl. IE/DOM beschreibt:
"Operation Aborted" error in IE when inserting new elements into the DOM, and fix - Dynamic Drive Forums
Den Code habe ich auf einer Mini-Testseite (siehe Anhang) eingebunden und entsprechend JS-Errors erhalten, welche ich einigermaßen gefixt habe.
Der Mainfunktion wird "functionref" übergeben. Wie kann ich hier dynamisch die Fkt aufrufen, deren Fkt-Name übergeben wurde?
Gibt es noch andere Vorgehensweisen, um dem IE ein schnelles DOM-Manipulieren zu ermöglichen?
Ein window.onload ist keine Option.
Thx
Haxe
|

09-03-2010, 21:32
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Zitat von Abraxax
Der Mainfunktion wird "functionref" übergeben. Wie kann ich hier dynamisch die Fkt aufrufen, deren Fkt-Name übergeben wurde?
|
Mit der bekannten Schreibweise, die mit eckigen Klammern auf Eigenschaften/Methoden eines Elements zugreift. „Normale“ Funktionen sind Methoden des window-Objektes.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

10-03-2010, 11:52
|
Abraxax
  THE REAL HAXE (Administrator)
|
|
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.621
|
|
Hey.
Ich habe deinen Vorschlag getestet, jedoch ohne Erfolg.
So habe ich den Aufruf mittels "dynamisch" übergebenen Fkt Name realisiert.
window[functionref]();
So steht es auch in den verschiedensten Seiten im Netz. Ich denke auch, dass es das ist, was du meinst.
Mindestens im FF erhalte ich jedoch die Meldung
Error: window[functionref] is not a function
Source file: ****test.html
Line: 35
Code:
// Mozilla, Opera and webkit nightlies currently support this event
if (document.addEventListener) {
// Use the handy event callback
document.addEventListener("DOMContentLoaded", function(){
document.removeEventListener("DOMContentLoaded", arguments.callee, false );
window[functionref](); // line 35
dd_domreadycheck=true
}, false )
}
Bin ich verrückt, habe ich was übersehen, oder liege ich total falsch?
|

10-03-2010, 11:54
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Hallo,
zeig mal bitte den Code mit der Definition dieser Funktion.
Edit: du machst das über JQuery? Das mit window[functionref]() ist Quatsch. Einfach functionref(), wenn es als Argument übergeben wurde. Dann existiert es ja nicht im globalen Scope.
Gruß,
Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
Geändert von AmicaNoctis (10-03-2010 um 11:56 Uhr)
|

10-03-2010, 12:05
|
Abraxax
  THE REAL HAXE (Administrator)
|
|
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.621
|
|
Hey Amica.
Der erste Code ist im ersten Post.
Dort habe ich die FKt functionref() im Object definieren müssen, damit ich keinen Fehler bekomme.
Der Sinn war den aufzurufenden Fkt Name dem domready() mitzugeben.
jQuery nutze ich nicht. Der Schreiberling dieser Fkt (siehe URL im ersten Post) hat sich davon wohl inspirieren lassen.
Ich habe noch eine nette Fkt gefunden, die auf Anhieb funktionierte.
domready.js - JavaScript - Snipplr
Ich denke, dass ich diesen Weg weiterverfolgen werden.
Eine Frage jedoch dazu. Das Event-Object kann ich doch umbennen, damit ich nicht in Konflikt gerate, wenn ich den Code dynamisch auf Websites schieben, welche evtl. mit einem JS-Framework arbeiten.
Thx
|

10-03-2010, 12:11
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Zitat:
Zitat von Abraxax
Das Event-Object kann ich doch umbennen, damit ich nicht in Konflikt gerate, wenn ich den Code dynamisch auf Websites schieben, welche evtl. mit einem JS-Framework arbeiten.
|
Solange du alle Vorkommen umbenennst...
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

10-03-2010, 12:13
|
Abraxax
  THE REAL HAXE (Administrator)
|
|
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.621
|
|
Zitat:
Zitat von AmicaNoctis
Solange du alle Vorkommen umbenennst...
|
Das versteht sich von selbst. ;-)
Danke.
|

10-03-2010, 23:04
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Zitat von Abraxax
So habe ich den Aufruf mittels "dynamisch" übergebenen Fkt Name realisiert.
window[functionref]();
|
Und functionref ist dabei ein String, der einen Funktionsnamen enthält (und wurde nur etwas unpassend benannt) ...?
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

11-03-2010, 12:27
|
Abraxax
  THE REAL HAXE (Administrator)
|
|
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.621
|
|
Das habe ich auch so verstanden. Daher wundert es mich, dass es einen JS Error produziert.
|

11-03-2010, 12:29
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Das Problem besteht also weiterhin?
Zeig mal bitte deinen gesamten JS-Code her.
Gruß,
Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

11-03-2010, 13:26
|
Abraxax
  THE REAL HAXE (Administrator)
|
|
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.621
|
|
Das Problem besteht grundsätzlich schon, aber ich bin ja schon auf den anderen Tripp ;-)
Ich wollte nur wahsagas Post nicht ignorieren, zumal mich das Thema ja interessiert ;-)
Interessanterweise klappt es jetzt.
HTML-Code:
<html>
<head>
<title>TEST</title>
</head>
<body>
<script type="text/javascript">
var dd_domreadycheck = false;
// Eigentliche FKT zum Aufrufen, wenn READY.
function start() {
alert('ready');
}
domready = function(functionref){ //based on code from the jQuery library
if (dd_domreadycheck){
window[functionref]()
return
}
// Mozilla, Opera and webkit nightlies currently support this event
if (document.addEventListener) {
// Use the handy event callback
document.addEventListener("DOMContentLoaded", function(){
document.removeEventListener("DOMContentLoaded", arguments.callee, false );
window[functionref]();
dd_domreadycheck=true
}, false )
}
else if (document.attachEvent){
// If IE and not an iframe
// continually check to see if the document is ready
if ( document.documentElement.doScroll && window == window.top) (function(){
if (dd_domreadycheck) return
try{
// If IE is used, use the trick by Diego Perini
// http://javascript.nwbox.com/IEContentLoaded/
document.documentElement.doScroll("left")
}catch(error){
setTimeout( arguments.callee, 0)
return;
}
//and execute any waiting functions
window[functionref]();
dd_domreadycheck=true
})();
}
}
domready('start');
</script>
</body>
</html>
Geändert von AmicaNoctis (11-03-2010 um 13:37 Uhr)
Grund: HTML-CodeTags gesponsert, damit's bunt wird ;)
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|