Beiträge des TO's im Thread hervorheben

OP #4833847
Lesenswert?

Hallo,

als ich gerade im IMDB-Forum herumgesurft bin, kam mir für das µc-Forum 
folgende Idee: Innerhalb eines Threads sollten Beiträge des TO's 
besonders gekennzeichnet werden, z.B. in dem sein Name im Autorenfeld 
fett hervorgehoben wird.
Oder man macht es wie auf IMDB, wo der Name in so einem blauen Kasten 
mit abgerundeten Ecken erscheint.

Also ich habe beim Lesen oft das Problem, dass ich nicht weiß ob der TO 
geantwortet hat ohne wieder nach oben scrollen zu müssen.
#4833857
Lesenswert?

Slippin J. schrieb:
> als ich gerade im IMDB-Forum herumgesurft bin, kam mir für das µc-Forum
> folgende Idee: Innerhalb eines Threads sollten Beiträge des TO's
> besonders gekennzeichnet werden, z.B. in dem sein Name im Autorenfeld
> fett hervorgehoben wird.

Den Vorschlag gab es schon:
Beitrag "Markieren des Themenstarters"

Wie hier im Forum leider üblich, gab es nie eine Antwort von offizieller 
Seite.
Gast #4835565
Lesenswert?

Folgende Lösung fände ich praktisch:

Per Klick auf den Namen des Autors werden alle Beiträge dieser Person 
hervorgehoben im Thread. Das kann auch gerne Clientseitig in Javascript 
ablaufen.
Aber eben nicht nur auf den TO beschränkt.
#4836483
Lesenswert?

meckerziege schrieb:
> Per Klick auf den Namen des Autors werden alle Beiträge dieser Person
> hervorgehoben im Thread.

Ich habe mal eben einen JavaScript dafür geschrieben.

JavaScript ES5:
1
(function(){
2
  var posts = Array.prototype.slice.call(document.getElementsByClassName("post"));
3
  var last = null;
4
  posts.forEach(function(post){
5
    var name = post.querySelector(".author .name");
6
    if(!name)
7
      return;
8
    name.addEventListener("click",function(event){
9
      if( event.target != name )
10
        return;
11
      var p = post.dataset.userId ? "userId" : "guestName";
12
      var pset = posts.filter(function(e){
13
        return e.dataset[p] == post.dataset[p];
14
      });
15
      if( last ){
16
        last.forEach(function(post){
17
          post.style.outline = "initial";
18
        });
19
      }
20
      pset.forEach(function(post){
21
        post.style.outline = "4px dotted #f80";
22
      });
23
      last = pset;
24
    });
25
  });
26
})();

Oder als Bookmarklet:
1
javascript:void((function(){var posts = Array.prototype.slice.call(document.getElementsByClassName("post"));var last = null;posts.forEach(function(post){var name = post.querySelector(".author .name");if(!name)return;name.addEventListener("click",function(event){if( event.target != name )return;var p = post.dataset.userId ? "userId" : "guestName";var pset = posts.filter(function(e){return e.dataset[p] == post.dataset[p];});if( last ){last.forEach(function(post){post.style.outline = "initial";});}pset.forEach(function(post){post.style.outline = "4px dotted #f80";});last = pset;});});})())
Gast #4836539
Lesenswert?

Daniel A. schrieb:
> Ich habe mal eben einen JavaScript dafür geschrieben.

Cool! Habe gerade mal gegoogelt wie man das nutzt. (Tipp für die es auch 
nicht wissen, z.B. im IE11: Ein vorhandenes Lesezeichen mit rechtsklick 
auf Eigenschaften und dann in dem Feld URL die einzeilige Version 
(Bookmarklet) einfügen)
War mir neu solche Dinge auf User Seite einfach hinzuzufügen. Jetzt 
fehlt nur noch, ein nochmaliger klick deaktiviert das Highlighten wieder 
:-)
Leider weis ich nicht wie man das programmiert.
#4836572
Lesenswert?

homa schrieb:
> Jetzt fehlt nur noch, ein nochmaliger klick deaktiviert das Highlighten wieder

JavaScript ES6:
1
(function(){
2
  var posts = Array.prototype.slice.call(document.getElementsByClassName("post"));
3
  var last = null;
4
  posts.forEach(function(post){
5
    var name = post.querySelector(".author .name");
6
    if(!name)
7
      return;
8
    name.addEventListener("click",function(event){
9
      if( event.target != name )
10
        return;
11
      if( last ){
12
        last.forEach(function(post){
13
          post.style.outline = "initial";
14
        });
15
      }
16
      var p = post.dataset.userId ? "userId" : "guestName";
17
      if( !last || !last.length || post.dataset[p] != last[0].dataset[p] ){
18
        var pset = posts.filter(function(e){
19
          return e.dataset[p] == post.dataset[p];
20
        });
21
        pset.forEach(function(post){
22
          post.style.outline = "4px dotted #f80";
23
        });
24
        last = pset;
25
      }else{
26
        last = null;
27
      }
28
    });
29
  });
30
})();

Bookmarklet:
1
javascript:void((function(){var posts = Array.prototype.slice.call(document.getElementsByClassName("post"));var last = null;posts.forEach(function(post){var name = post.querySelector(".author .name");if(!name)return;name.addEventListener("click",function(event){if( event.target != name )return;if( last ){last.forEach(function(post){post.style.outline = "initial";});}var p = post.dataset.userId ? "userId" : "guestName";if( !last || !last.length || post.dataset[p] != last[0].dataset[p] ){var pset = posts.filter(function(e){return e.dataset[p] == post.dataset[p];});pset.forEach(function(post){post.style.outline = "4px dotted #f80";});last = pset;}else{last = null;}});});})())
Gast #4836706
Lesenswert?

Leider nein - klappt nicht. Aber F5 für neu laden hilft auch, wobei dann 
alle Markierungen weg sind. Ich bin trotzdem begeistert und werde mich 
mal mit javascript und diesen bookmarklet beschäftigen. Interesse 
geweckt.
Gast #6051397
Lesenswert?

Micha schrieb:
> Daniel A. schrieb:
>> Die neue kursive Darstellung der Gästenamen mit dem <i> tag fürt dazu,
>> das das Script für diese nicht mehr richtig läuft.
>
> Wie äußert sich das? Bei mir scheint es noch zu funktionieren.

Wenn du auf das "(Gast)" klickst, das geht, aber wenn man auf den 
kursiven Namen davor klickt, das macht nichts mehr.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren