Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
(Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI...

setAttribute() im IE

Diskussion: setAttribute() im IE im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Anzeige Heyho ich hab für meine neue website mit ajax gearbeitet. http://beta.verfriemelt.org/ dazu ne kleine js function geschrieben, was einfach ...

Antwort
Alt 30.09.08, 11:37   #1 (permalink)
Member of Honour
 
Benutzerbild von easteregg
 
Registriert seit: 14.09.07
easteregg Leistung: Pentium Ieasteregg Leistung: Pentium I
easteregg eine Nachricht über ICQ schicken
Likes: 62
setAttribute() im IE

Anzeige

Heyho

ich hab für meine neue website mit ajax gearbeitet.
http://beta.verfriemelt.org/

dazu ne kleine js function geschrieben, was einfach alle normalen links umarbeitet:

Code:
function replaceLinks() {
    
    var links = document.getElementsByTagName("a"); 
    for (var i = 0; i < links.length; i++) { 
        
        href = links[i].href; 
       
        if (href.substring(href.length,href.length-1) != "#") {
            links[i].setAttribute("onclick","sndReq('"+ href +"')");
            links[i].href = "#";
        }
    }
}
das problem: der IE *suprise*
der kommt mit dem setAttribute nicht klar.
wie bekomm ich es hin, ähnlichen effekt auch für den IE zu bauen?

habs geschafft... ;D

Code:
function replaceLinks() {
    
    var name = navigator.userAgent.toLowerCase();
    //InternetExplorer
    var ie = (name.indexOf("msie") > -1);
    
    var links = document.getElementsByTagName("a"); 
    
    for (var i = 0; i < links.length; i++) { 
        
        var href = links[i].href; 
       
        if (href.substring(href.length,href.length-1) != "#" && href.substring(0,10) != "javascript") {
            if (ie) {
                links[i].href = "javascript:sndReq('" + href + "')";
            } else {
                links[i].setAttribute("onclick","sndReq('"+ href +"')"); //geht im IE nich
                links[i].href = "#";
            }
        }
    }
}
__________________
» Flattr mich! - Wenn dir mein Beitrag geholfen hat! «
<| 2 AMD Opterons 2384@ 8x3,2ghz | Tyan S2915 | 10GB | 2x 8800GT | 8400GS | Dell 3008WFP + 2x2007FP |>
easteregg ist offline   Mit Zitat antworten
Alt 01.10.08, 19:57   #2 (permalink)
 
Benutzerbild von Eydeet
 
Registriert seit: 14.04.06
Eydeet Leistung: Facit NTK
Likes: 4
Standard

Deine MSIE-Variante müsste doch eigentlich für alle Browser funktionieren, oder? Wenn ja könntest du dir ein wenig Code sparen
Eydeet ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 01.10.08, 20:12   #3 (permalink)
Member of Honour
Themenstarter
 
Benutzerbild von easteregg
 
Registriert seit: 14.09.07
easteregg Leistung: Pentium Ieasteregg Leistung: Pentium I
easteregg eine Nachricht über ICQ schicken
Likes: 62
Standard

joar, die geht auch mit den anderen, aber ich find die onClick version einfach sauberer
__________________
» Flattr mich! - Wenn dir mein Beitrag geholfen hat! «
<| 2 AMD Opterons 2384@ 8x3,2ghz | Tyan S2915 | 10GB | 2x 8800GT | 8400GS | Dell 3008WFP + 2x2007FP |>
easteregg ist offline   Mit Zitat antworten
Alt 01.10.08, 22:03   #4 (permalink)
 
Benutzerbild von BasicAvid
 
Registriert seit: 17.03.04
BasicAvid Leistung: Facit NTK
Likes: 2
Standard

Du könntest das ganze aber auch noch anders machen, und zwar so:

Code:
links[i].onclick = function() { sendReq(href); };
Das funktioniert im ie sowie im ff.
__________________
Mfg Basic Avid
- Use it or be used! -
BasicAvid ist offline   Mit Zitat antworten
Alt 01.10.08, 22:10   #5 (permalink)
Member of Honour
Themenstarter
 
Benutzerbild von easteregg
 
Registriert seit: 14.09.07
easteregg Leistung: Pentium Ieasteregg Leistung: Pentium I
easteregg eine Nachricht über ICQ schicken
Likes: 62
Standard

seltsam, genau das hatte ich probiert, aber das ging bei mir nirgendswo.
vielleicht habsch da was vertippt oder so!

aber gut zu wissen, dass das auch geht.
__________________
» Flattr mich! - Wenn dir mein Beitrag geholfen hat! «
<| 2 AMD Opterons 2384@ 8x3,2ghz | Tyan S2915 | 10GB | 2x 8800GT | 8400GS | Dell 3008WFP + 2x2007FP |>
easteregg ist offline   Mit Zitat antworten
Alt 02.10.08, 00:00   #6 (permalink)
jmc
 
Registriert seit: 16.06.08
jmc Leistung: Facit NTK
Likes: 0
Standard

Events sind eigentlich auch keine Attribute. Für diese gibt es beim IE attachEvent und sonst addEventListener.
jmc ist offline   Mit Zitat antworten
Alt 02.10.08, 18:00   #7 (permalink)
 
Benutzerbild von metax.
 
Registriert seit: 22.01.07
metax. Leistung: 8086
metax. eine Nachricht über ICQ schicken
Likes: 10
Standard

Ich verwende immer folgende Javascript-Funktion zum Anhängen von Events. Sie soll angeblich in allen wesentlichen Browsern funktionieren. Lässt sich also auch komplett in eine unabhängige Javascript-Datei auslagern, ohne Javascript in den HTML-Quelltext schreiben zu müssen.
Code:
function addEvent(obj, evType, fn){ 
 if (obj.addEventListener){ 
   obj.addEventListener(evType, fn, false); 
   return true; 
 } else if (obj.attachEvent){ 
   var r = obj.attachEvent("on"+evType, fn); 
   return r; 
 } else { 
   return false; 
 } 
}

addEvent(window, 'load', myFunction);
mfg, metax.
__________________
Wenn keiner zuschaut, teile ich heimlich durch Null!
Meine Homepage: Planet Metax | meine Bilder: DeviantArt | Twitter
metax. ist offline   Mit Zitat antworten
Alt 02.10.08, 18:24   #8 (permalink)
jmc
 
Registriert seit: 16.06.08
jmc Leistung: Facit NTK
Likes: 0
Standard

Du könntest die Version von Metax sogar noch etwas erweitern indem du folgende etwas abgeänderte Version benutzt (bei neuen Browsern spielt es keine Rolle, aber bei den uralten schon noch):

Code:
function addEvent(obj, type, fn){
 if(obj.addEventListener){
  obj.addEventListener(type, fn, false);
 }else if (obj.attachEvent){
  obj["e_" + type + "_" + fn] = fn;
  obj[type + fn] = function(){
   obj["e_" + type + "_" + fn](window.event);
  }
  obj.attachEvent( "on" + type, obj[type + fn] );
 }else if(!(obj["on" + type] = fn)){
  return false;
 }
 return true;
}

function removeEvent(obj, type, fn){
 if(obj.removeEventListener){
  obj.removeEventListener(type, fn, false);
 }else if(obj.detachEvent){
  obj.detachEvent("on" + type, obj[type + fn]);
  obj[type + fn] = null;
  obj["e_" + type + "_" + fn] = null;
 }else if(obj["on" + type]){
  obj["on" + type] = null;
 }else{
  return false;
 }
 return true;
}
PS: Ich habs kopiert, da ich zu faul war es selbst zu schreiben, aber es sollte stimmen.
jmc ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Web, Network & Multimedia Palace » (Web-) Design und webbasierte Sprachen » setAttribute() im IE
Themen-Optionen
Ansicht

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.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61