[JavaScript] jQuery anchor onclick Attribut abfangen.

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Coksnuss, 3. Dezember 2009 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 3. Dezember 2009
    jQuery anchor onclick Attribut abfangen.

    So, jetzt muss ich doch einen Thread dazu erstellen, weil ich nicht weiterkomme.

    Also:
    Ich muss ein Webportal erstellen, welches später auf einem Touchscreen läuft. Ich habe vollen Zugriff auf die Software des PC's auf dem das Portal später läuft.
    Es soll möglich sein (bestimmte(!)) externe Seiten einzubinden.

    Soweit kein Problem, habe ich mit Frames gelöst...
    Firefox habe ich so eingestellt, dass Links immer im aktuellen Fenster geöffnet werden. (unabhängig von dem target Attribut)
    Aber jetzt kann man in dem eingebundenen Frame ja auf weitere Links klicken und diese brechen
    1. das Frame (wenn sie einen externen Verweis beinhalten)
    2. sollen weiterführende Links (auf externe Seiten) gesperrt werden.

    Da ich mich mit Proxys nicht auskenne, suchte ich nach einer anderen Möglichkeit dies anderweitig zu bewerkstelligen.
    Murdoc brachte mich auf die Idee Greasemonkey zu benutzen. Ich habe jetzt ein (Greasemonkey)Script mit welchem ich Links aus <a> und <area> tags blocke sofern das entsprechende href attribute einen externen link beinhaltet.
    Aber ich bekomm es einfach nicht hin ein 'onclick' events abzufangen oder gar zu verändern.

    Das heißt ein Link wie <button onclick="document.location.href='http://www.google.de'" /> kann nach wie vor angeklickt werden.

    Hoffe es kann mir jemand helfen....

    Spoiler
    Der Greasemonkey code:
    PHP:
    // ==UserScript==
    // @name          Remove external links
    // @description   Remove external links on domains
    // @include       *
    // @require       http://code.jquery.com/jquery-latest.js
    // ==/UserScript==

    $( document ). ready (function() {
        $(
    "a" ). click (function( event ) {
            
    // Check if the link points to an external site
            
    if($( this ). attr ( "href" ). indexOf ( "http://" ) != - 1 )
            {
                
    event . preventDefault ();
            }
        });
        
        $(
    "area" ). click (function( event ) {
            
    // Check if the link points to an external site
            
    if($( this ). attr ( "href" ). indexOf ( "http://" ) != - 1 )
            {
                
    event . preventDefault ();
            } else {
                
    // Check if needed(Would _blank break frame?)
                
    this . target  "_self" ;
            }
        });
        
        

    });
     
  2. 3. Dezember 2009
    AW: jQuery anchor onclick Attribut abfangen.

    naja, mit DOM-level 2 events wirst du da ned viel ausrichten können.
    überschreib einfach direkt den level 0 event

    Code:
    for each(var a in document.querySelectorAll('a')) { 
     a.removeAttribute('target'); //weg damit is eh invalides xhtml :-P
     a.onclick = function() { return true; };
    }
    ps: der code geht nur in mozillas, also ned wundern

    //ah seh grad das du $(document).ready verwendet: brauchst du ned, dein script wird automatisch im DOMContentLoaded event ausgeführt.

    warum auch immer du jquery verwendest
     
  3. 3. Dezember 2009
    AW: jQuery anchor onclick Attribut abfangen.

    Weil ich keine Ahnung von Javascript habe.. Habe ein Beispiel im Greasemonkey wiki gefunden und umgeschrieben. Aber ohne $(document).ready funktioniert der Code nicht mehr. (Und ohne jquery weiß/wusste ich nicht wie ich Elemente verändern kann)
    Werde mal dein Beispielcode testen und erweitern. Wenn ich nicht mehr weiter komme, melde ich mich wieder. (BW geht leider nicht mehr, muss erst wieder andere bewerten)...

    Sooo, jetzt hab ich folgendes Problem:

    Also, sagen wir ich binde folgende Seite ein:

    index.html
    PHP:
    < html >
        <
    head >
            <
    script type = "text/javascript"  src = "script.js" ></ script >
        </
    head >
        
        <
    body >
            <
    button onclick = "openExternalLink();"  value = "nicht klicken!"  />
            <
    button onclick = "important();"  value = "Wichtig"  />
        </
    body >
    </
    html >
    script.js
    PHP:

    function  openExternalLink ()
    {
        
    document . location . href  'http://www.google.de' ;
    }

    function 
    important ()
    {
        
    alert ( "Wichtig, wichtig! Die Funktion muss erhalten bleiben!" );
    }
    Kann ich da jetzt irgentwie vermeiden, dass Google geöffnet wird, ohne das ich das onclick attribut direkt löschen muss?
     
  4. 3. Dezember 2009
    AW: jQuery anchor onclick Attribut abfangen.

    nein das ist nicht möglich.
     
  5. 4. Dezember 2009
    AW: jQuery anchor onclick Attribut abfangen.

    Gut, dann weiß ich bescheid... Müssen die sich halt damit zufrieden geben!
    Danke dir...
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.