Forum: www.mikrocontroller.net Beiträge des TO's im Thread hervorheben


von Slippin J. (gustavo_f)


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.

von Mark B. (markbrandis)


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.

von Applaus (Gast)


Lesenswert?

Das ist mal eine gute Idee! Kann man das bitte realisieren?

von meckerziege (Gast)


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.

von Holger L. (max5v)


Lesenswert?

Hier ist so ein Script:
Beitrag "User ausblenden"

von Daniel A. (daniel-a)


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;});});})())

von homa (Gast)


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.

von Daniel A. (daniel-a)


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;}});});})())

von homa (Gast)


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.

von Daniel A. (daniel-a)


Lesenswert?

Ich habe leider gerade keinen IE zur hand, eventuell hat dieser mühe mit 
dem CSS Wert "initial". Man könnte versuchen diesen mit "" oder mit "0 
none" zu ersetzen.

von Matthias 🟠. (homa)


Lesenswert?

So habe das jetzt auch mal im Edge ausprobiert und da klappt es 
einwandfrei. Danke!
Leider braucht man hier ein third party tool da das editieren mit dem 
Explorer nicht mehr geht. Die Favoriten sind jetzt in einer db 
gespeichert :-(
Ich nutze das Tool hier 
http://www.emmet-gray.com/Articles/EdgeManage.html

von Micha (Gast)


Angehängte Dateien:

Lesenswert?

Da ich gerade nützliche Scripts für Violentmonkey/Greasemonkey
zusammensuche, hier die entsprechende Version des Scripts.

von Daniel A. (daniel-a)


Lesenswert?

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. Die Zeile:
1
if( event.target != name )
Muss ersetzt werden durch:
1
  
2
if( event.target != name && !name.contains(event.target) )

von Micha (Gast)


Lesenswert?

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.

von DPA (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.