GreaseMonkey zum Individualisieren des Forums



  • Aha. Bei Chrome funktioniert das Skript - bei Firefox nicht. Woran könnte das liegen? Ich werde vielleicht mal ins Webforum schreiben.



  • Sone schrieb:

    Ich werde vielleicht mal ins Webforum schreiben.

    Lieber nicht, der CODE ist grottig!



  • Ist auch nicht besser und vllt. gehen auch die Regex nicht in anderen Browsern?

    Aber, für mein erstes Greasemonkey-Skript find ich es nicht schlecht...

    // ==UserScript==
    // @name        junta-cpp
    // @namespace   junta-cpp
    // @include     http://www.c-plusplus.net/forum/*
    // @version     1
    // ==/UserScript==
    
    var style =
         '.inlineadtitle'
        +',.inlinead'
        +',.catbutton'
        +',.bodyline table tr'
        +',iframe'
        +',body table'
        +',.postdetails .if_print_hide'
        +',.topnav td p'
        +',.topnav img'    
            +'{display:none}'
        +'.bodyline'
        +',.bodyline table'
            +'{display:table !important}'
        +'.bodyline table table tr'
        +',.bodyline table tr:first-child'
            +'{display:table-row}'
    
        +'.topnav table{margin-left:auto;margin-right:auto;}'
        +'.topnav form{display:block}'
    
        +'.bodyline table table[class=if_print_hide]'
            +'{display:none !important}'
    ;
    
    if((/\/forum\/?$/).test(window.location.pathname)){
        style +=
             '.genmed'
            +',.forumline td:first-child img:last-child'
            +',.row1 br'
                +'{display:none}'
            +'.forumline td{padding: 0 7px}'
        ;
    }
    
    var el = document.createElement('style');
    el.innerHTML = style;
    document.getElementsByTagName('head')[0].appendChild(el);
    
    document.getElementsByName('jumpbox')[0].parentNode.innerHTML +=
         '<center><div><form action="http://www.google.de/cse" id="cse-search-box">'
        +'<input name="cx" value="partner-pub-3727475938645712:xq6206-4diq" type="hidden">'
        +'<input name="q" size="41" type="text">'
        +'<input name="sa" value="Suche" type="submit"></form></div></center>'
    ;
    
    document.getElementsByClassName('nav')[0].innerHTML = 
    document.getElementsByClassName('nav')[0].innerHTML.replace(
            /(\r\n|\n|\r)/gm,''
        ).replace(
            /^.*?<hr>.+?]/gi,''    
        ).replace(
            /[&nbsp;/gi,''    
        ).replace(
            /&nbsp;]/gi,''    
        ).replace(
            /<div[^>]*>(.*?)<\/div>/gi,'$1'
        ).replace(
            /<\/a>[^<]*<a/gi,'</a> | <a'
        ).replace(
            />Logout.*?</gi,'>Logout<'
        )
    ;
    


  • junta schrieb:

    Sone schrieb:

    Ich werde vielleicht mal ins Webforum schreiben.

    Lieber nicht, der CODE ist grottig!

    Meinst du meinen Code, oder das HTML von Forum? Bei letzterem trifft das AFAIK gut zu.
    Auch bei meinem... 🤡

    getElementsByClassName('nav')

    Oh, solche Funktionen kannte ich gar nicht. Ich habe mir JavaScript vor ein paar Tagen beigebracht...



  • Nimm jQuery - ist viel einfacher als xPath.

    Unsere Greasemonkey Scripte die wir bauen sind alle mit jQuery. xPath ist einfach ne katastrophe von der Syntax her, da sind die CSS Selectoren die jQuery verwendet einfach besser. Und jQuery hat halt auch sonst noch einige netten Features.



  • @Shade bezahlen die dich dafür?



  • Ich hätte übrigens ein wenig Kritik an dem Code gern. Ich will doch lernen :p



  • Sone schrieb:

    Ich hätte übrigens ein wenig Kritik an dem Code gern.

    Kritik: Das ist Javascript. Kritik Ende



  • Nathan schrieb:

    Sone schrieb:

    Ich hätte übrigens ein wenig Kritik an dem Code gern.

    Kritik: Das ist Javascript. Kritik Ende

    Ernst gemeinte, sollte man noch hinzufügen.

    Denn GreaseMonkey akzeptiert AFAICS nur JavaScript.



  • Shade Of Mine schrieb:

    Nimm jQuery - ist viel einfacher als xPath.

    Das löst nicht das Problem, dass die Google-Suchbox auf Firefox nicht funkt.



  • Sone schrieb:

    Nathan schrieb:

    Sone schrieb:

    Ich hätte übrigens ein wenig Kritik an dem Code gern.

    Kritik: Das ist Javascript. Kritik Ende

    Ernst gemeinte, sollte man noch hinzufügen.

    War ernst gemeint.



  • Sone schrieb:

    Shade Of Mine schrieb:

    Nimm jQuery - ist viel einfacher als xPath.

    Das löst nicht das Problem, dass die Google-Suchbox auf Firefox nicht funkt.

    Moeglicherweise schon 😉

    deshalb verwendet man Libraries damit man diese Probleme nicht hat. Es ist wie in C++, wenn du immer dein memcpy selber schreibst, dann beisst es sich irgendwann irgendwo - wenn du aber immer schoen brav copy() verwendest, dann beisst es sich nirgends.

    Browser sind da noch schlimmer. innerHTML hat zB einige Probleme mit unterschiedlichen Browsern. Da gibt es viel zu beachten. Frueher musste man das alles wissen. Heute zum Glueck nicht mehr - aber alle grossen JavaScript Frameworks haben unglaublich viele Zeilen Code workarounds fuer unterschiedliche JavaScript Implementationen drin.

    Deshalb lachen hier einige schon wenn ich mir den Mund fusslig rede - aber heute benutzt man jQuery - das loest diese ganzen Probleme. Es gibt nur einen Grund warum man jQuery nicht verwendet: wenn man ein komplexes MVC-System wie zB angular, backbone, etc verwendet (und selbst dann verwenden noch genug Leute jQuery).

    Seriously, es lohnt sich nichtmal den Code anzusehen. Es kann natuerlich auch nicht an innerHTML liegen, es kann eine million Sachen sein - aber stell dir das ganze mal in C++ vor:

    Jemand hat sein eigenes printf() geschrieben und dann funktioniert bei einem bestimmten Compiler etwas bei der evaluierung der format specifier nicht. Dann ist die erste antwort: benutze printf und baue nix nach wenn du dich nicht auskennst.

    Und das ist die selbe Aussage die ich hier taetige.

    PS:
    ein weiterer Grund warum ich bei diesen Themen immer jQuery erwaehne ist, dass ich noch keinen aktzeptablen JavaScript Code hier im Forum gesehen habe. Nicht ein einziges mal. Das JavaScript dass hier gepostet wird sieht aus wie von vor 10 Jahren.

    Und wir alle wissen wie C++ von vor 20 Jahren ausgesehen hat - und das war zum gruseln. Und so geht es mir mit dem JS hier 😉



  • Nathan schrieb:

    Sone schrieb:

    Nathan schrieb:

    Sone schrieb:

    Ich hätte übrigens ein wenig Kritik an dem Code gern.

    Kritik: Das ist Javascript. Kritik Ende

    Ernst gemeinte, sollte man noch hinzufügen.

    War ernst gemeint.

    Nein, es ist dummes getrolle.



  • Shade Of Mine schrieb:

    Nathan schrieb:

    Sone schrieb:

    Nathan schrieb:

    Sone schrieb:

    Ich hätte übrigens ein wenig Kritik an dem Code gern.

    Kritik: Das ist Javascript. Kritik Ende

    Ernst gemeinte, sollte man noch hinzufügen.

    War ernst gemeint.

    Nein, es ist dummes getrolle.

    Wenn du das so siehst.
    Du schreibst ja selber:

    Shade Of Mine schrieb:

    Und wir alle wissen wie C++ von vor 20 Jahren ausgesehen hat - und das war zum gruseln. Und so geht es mir mit dem JS hier 😉

    Und so geht es mir tendenziell mit jedem Javascript, was ich sehe.
    imo kann man kein schönes Javascript schreiben, da die Sprache an sich schon nicht schön ist.
    Und deswegen ist die einzige Kritik, die ich Sone geben kann, dass das Javascript ist.
    Denn ich habe noch nie Javascript gesehen, was schön ist, weswegen ich Sones Code auch nicht kritisieren kann*.

    * Abgesehen davon, dass ich selber nicht gut genug Javascript kann.



  • Shade Of Mine schrieb:

    PS:
    ein weiterer Grund warum ich bei diesen Themen immer jQuery erwaehne ist, dass ich noch keinen aktzeptablen JavaScript Code hier im Forum gesehen habe. Nicht ein einziges mal.

    Um das zu beurteilen, musst du es besser können! Zeig doch mal was her...

    Shade Of Mine schrieb:

    Das JavaScript dass hier gepostet wird sieht aus wie von vor 10 Jahren.

    Man muss - auch heute noch - nicht immer alles mit einer Library erschlagen! 😉



  • Nathan schrieb:

    Und deswegen ist die einzige Kritik, die ich Sone geben kann, dass das Javascript ist.
    Denn ich habe noch nie Javascript gesehen, was schön ist, weswegen ich Sones Code auch nicht kritisieren kann*.

    * Abgesehen davon, dass ich selber nicht gut genug Javascript kann.

    Kannst du einen neuen Thread aufmachen? am besten in webzeugs wo du javascript fundiert kritisierst?

    denn javascript ist eigentlich eine ziemlich tolle sprache. es wird halt hauptsaechlich von anfaengern verwendet, was natuerlich zu vielen schlechten js code fuehrt, aber die sprache ansich ist ziemlich gut.

    sie hat ihre quirks, keine frage - zB was ist []+[] ? aber generell ist sie ziemlich cool und flexibel. aber bitte ein eigener thread mit deiner kritik - ich werde mir die zeit nehmen und deine kritik fundiert beantworten.

    @junta:
    um ehrlich zu sein - jQuery ist die standard library fuer das web. es ist wie die STL fuer C++. man verwendet es einfach.

    aber erstelle einfach einen eigenen thread im webzeugs forum warum du denkst dass jquery nicht zum standard repertoire gehoeren sollte und ich werde dem die noetige aufmerksamkeit widmen.



  • Shade Of Mine schrieb:

    um ehrlich zu sein - jQuery ist die standard library fuer das web. es ist wie die STL fuer C++. man verwendet es einfach.

    Von den Firmen die ich als WWW-Standard bezeichnen würde, verwendet es... keiner (okay, zumindest nicht alle 😉 )?

    Shade Of Mine schrieb:

    aber erstelle einfach einen eigenen thread im webzeugs forum warum du denkst dass jquery nicht zum standard repertoire gehoeren sollte und ich werde dem die noetige aufmerksamkeit widmen.

    Nö, ist nicht nötig. Das Script läuft - auch wenn es bischen langsam ist - bei mir. Des Weiteren sind solche Librarys bei großen Projekten hilfreich. Schätze, da sind Wir uns einig?



  • junta schrieb:

    Von den Firmen die ich als WWW-Standard bezeichnen würde, verwendet es... keiner (okay, zumindest nicht alle 😉 )?

    http://w3techs.com/technologies/details/js-jquery/all/all

    amazon, google, microsoft, adobe, intel,...
    um nur ein paar zu nennen.

    ich glaube apple ist der einzige große der kein jquery verwendet.



  • Shade Of Mine schrieb:

    junta schrieb:

    Von den Firmen die ich als WWW-Standard bezeichnen würde, verwendet es... keiner (okay, zumindest nicht alle 😉 )?

    http://w3techs.com/technologies/details/js-jquery/all/all

    amazon, google, microsoft, adobe, intel,...
    um nur ein paar zu nennen.

    ich glaube apple ist der einzige große der kein jquery verwendet.

    Kaum verwunderlich, die Blue-Chips verwenden Software, Hardware und ihr Personal in jeder nur erdenklichen Kombination...



  • Um mal wieder aufs Thema "Forum-Individualisierung" zurückzukommen, ich hab früher auch greasemonkey verwendet fürs Forum und war damit sehr zufrieden. Inzwischen nehme ich lieber CSS-Dateien, die man z.B. mit "Stylish" gezielt fürs Forum einbinden kann. Das wird nämlich schneller gerendert als greasemonkey. Vor allem erscheinen die ausgeblendeten Teile nicht erst kurz, bis das Greasemonkey-Skript ausgeführt wurde. Das hat mich besonders auf langsameren Rechnern gestört.

    @namespace url(http://www.w3.org/1999/xhtml);
    
    @-moz-document url-prefix("http://www.c-plusplus.net/forum/") {
      .topnav > tbody:nth-child(1) > tr:nth-child(1) > td:nth-child(2) { display: none; }
      body > table:nth-child(2)[width="95%"] { display:none; }
      body > p { display:none; }
      body > span.if_print_hide { display:none; }
      body > table.if_print_hide { display:none; }
      body > table.bodyline > tbody > tr > td > table > tbody > tr > td > table.if_print_hide:last-of-type { display:none; }
      body > table > tbody > tr > td > span > table > tbody > tr > td.nav { display:none; }
      body > table.bodyline > tbody > tr > td > table > tbody > tr:nth-last-child(1) { display:none; }
      body > table:last-of-type { display:none; }
    }
    @-moz-document url-prefix("http://www.c-plusplus.net/forum/f") {
      .bodyline > tbody:nth-child(1) > tr:nth-child(1) > td:nth-child(1) > table:nth-child(3) > tbody:nth-child(1) >
        tr:nth-child(1) > td:nth-child(1) > table:nth-child(1) > tbody > tr:first-child { display: none; }
      .bodyline > tbody:nth-child(1) > tr:nth-child(1) > td:nth-child(1) > table:nth-child(3) > tbody:nth-child(1) >
        tr:nth-child(1) > td:nth-child(1) > table:nth-child(1) > tbody > tr > td[width="10%"] { display: none; }
      .bodyline > tbody > tr > td > table > tbody > tr:nth-last-child(2) { display:none; }
    }
    

Anmelden zum Antworten