Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
IE vs. DOM // domready [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
IE vs. DOM // domready


 
Abraxax
09-03-2010, 21:53 
 
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 (http://www.dynamicdrive.com/forums/blog.php?b=30)

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

 
wahsaga
09-03-2010, 22:32 
 
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.

 
Abraxax
10-03-2010, 12:52 
 
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


// 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?

 
AmicaNoctis
10-03-2010, 12:54 
 
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

 
Abraxax
10-03-2010, 13:05 
 
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 (http://snipplr.com/view/6029/domreadyjs/)

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

 
AmicaNoctis
10-03-2010, 13:11 
 
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...

 
Abraxax
10-03-2010, 13:13 
 
Solange du alle Vorkommen umbenennst...

Das versteht sich von selbst. ;-)

Danke.

 
wahsaga
11-03-2010, 00:04 
 
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) ...?

 
Abraxax
11-03-2010, 13:27 
 
Das habe ich auch so verstanden. Daher wundert es mich, dass es einen JS Error produziert.

 
AmicaNoctis
11-03-2010, 13:29 
 
Das Problem besteht also weiterhin?

Zeig mal bitte deinen gesamten JS-Code her.

Gruß,

Amica

 
Abraxax
11-03-2010, 14:26 
 
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. :confused:

<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>


Alle Zeitangaben in WEZ +2. Es ist jetzt 07:51 Uhr.