• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

IE6 verknüpfte Klassen

krackmoe

Neues Mitglied
Der IE6 macht hier Probleme indem er nur die letzten beiden rating_container mit a.rating selected.gerade und ungerade nimmt.

Durch rumgoogeln bin ich draufgekommen, das er ein Problem mit verknüpften Klassen hat und hier deswegen immer nur die letzte jeweilge Klasse nimmt..

Gibt es hierfür einen BugFix bzw. kennt jemand einen Workaround!?

HTML:
.rating_container a.rating_off.gerade{ 
    background-image:url("../images/sterne/grau_rechts.gif");
    background-repeat: no-repeat;
    width: 15px;
}
.rating_container a.rating_off.ungerade{ 
    background-image:url("../images/sterne/grau_links.gif"); 
}
.rating_container a.rating_on.gerade{ 
    background-image:url("../images/sterne/gruen_rechts.gif");
    background-repeat: no-repeat;
    width: 15px;
}
.rating_container a.rating_on.ungerade{ 
    background-image:url("../images/sterne/gruen_links.gif");
}
.rating_container a.rating_selected.gerade{ 
    background-image:url("../images/sterne/gruen_rechts_blass.gif");
    background-repeat: no-repeat;
    width: 15px;
}
.rating_container a.rating_selected.ungerade{ 
    background-image:url("../images/sterne/gruen_links_blass.gif"); 
}
 
zeig mal das html dazu.

wäre schön zu sehen wie du die klassen dann auch nutzt!
vielleicht macht diesmal ja der IE alles richtig (ich glaubs aber kaum:twisted:)

Wenn du den code zeigst, könnte man das viellecith sehen wo es einen workaround geben könnte!
 
Nicht ganz so leicht zu zeigen da es durch Javascript generiert wird :D

PHP:
<div id="review-rating-product" class="rating_container"></div>
<script type="text/javascript">
	var rating_product = new Control.Rating('review-rating-product', {
		rated: <?php echo($loggedIn?'false':'true') ?>,
	<?php if($loggedIn): ?>
		updateUrl: '<?php echo($this->getRatingUrl()) ?>',
		updateParameterName: 'rating',
		updateContainer: 'review-rating-product-info',
	<?php endif; ?>
		value: <?php echo $rating ?>
	});
	<?php if($loggedIn): ?>
	rating_product.observe('afterChange',function(value){  
		$('review-rating-product-info').classNames().set('rating-info status-'+value);
  
	}); 
	<?php endif; ?>
</script>

Code:
Control.Rating = Class.create({
	initialize: function(container,options){
		Control.Rating.instances.push(this);
		this.value = false;
		this.links = [];
		this.container = $(container);
		this.container.update('');
		this.options = {
			min: 1,
			max: 10,
			rated: false,
			input: false,
			reverse: false,
			capture: true,
			multiple: false,
			classNames: {
				off: 'rating_off',
				half: 'rating_half',
				on: 'rating_on',
				selected: 'rating_selected'
			},
			updateUrl: false,
			updateContainer: false,
			updateParameterName: 'value',
			afterChange: Prototype.emptyFunction
		};
hier steht noch einiges... was aber den ganzen Code nur unnötig lang macht.. hab ich rausgeschnitten für hier..
Code:
render: function(rating,force_selected){
		(this.options.reverse ? this.links.reverse() : this.links).each(function(link,i){
			if(link.value <= Math.ceil(rating)){
				link.className = this.options.classNames[link.value <= rating ? 'on' : 'half'];
				if(link.value%2==0)
					link.addClassName("gerade");
				else
					link.addClassName("ungerade");
				if(this.options.rated || force_selected)
					link.addClassName(this.options.classNames.selected);
			}
			else{
				link.className = this.options.classNames.off;
				if(link.value%2==0)
					link.addClassName("gerade");
				else
					link.addClassName("ungerade");
				
			}
		}.bind(this));
	},
 
Der IE6 unterstützt verknüpfte Klassen definitiv nicht. Aus diesem Grund musst Du für diesen Browser darauf verzichten und wirklich einzelne Klassennamen verwenden.
 
Z.B. das hier:

Code:
a.rating_on.ungerade { [Eigenschaften] }

Der Code sagt:
Die nachfolgenden Eigenschaften betreffen alle Links (<a>) die sowohl die Klasse "rating_on" als auch "ungerade" zugewiesen haben.
 
Z.B. das hier:

Code:
a.rating_on.ungerade { [Eigenschaften] }
Der Code sagt:
Die nachfolgenden Eigenschaften betreffen alle Links (<a>) die sowohl die Klasse "rating_on" als auch "ungerade" zugewiesen haben.
Diese Schreibweise gibt es nicht und mit multiplen Klassen hat der IE keine Probleme
 
Zurück
Oben