2017-11-08 3 views
2

Ich versuche, dieses Bookmarklet zum Laufen zu bringen, aber ich bekomme diese Fehlermeldung (in Chrome):Bookmarklet Ausgabe

Uncaught SyntaxError: Unexpected identifier

ich nicht bekommen, was in den href mit meinem JavaScript-Code falsch ist. Ich kann es nicht in eine separate Datei schreiben; Ich muss das in der href laufen lassen.

<a href="javascript:(function(){ 
 
     if (!($ = window.jQuery)) { 
 
     script = document.createElement('script'); 
 
     script.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js'; 
 
     script.onload=releasetheScript; 
 
     document.body.appendChild(script); 
 
     } 
 
     else { 
 
     releasetheScript(); 
 
     } 
 
    
 
     function releasetheScript() { 
 
     
 
     regex = ['ceo', 'fondateur', 'cofondateur', 'cto', 'cfo', 'daf', 'startup', 'entrepreneur', 'office manager', 'fintech', 'freelance', 'tech', 'founder', 'neobanque', 'banking', 'comptable', 'incubateur', 'coworking', 'PME', 'VC', 'accélérateur'] 
 
     banned = ['|(?!', 'sex', 'porn'] 
 
     target = regex.join('|') + banned.join('|') + ')'; 
 
     interval = 10000 
 
     a = setInterval(function() { 
 
      window.scrollTo(0,document.body.scrollHeight); 
 
      var fields = $('.ProfileCard-userFields'); 
 
      for (var i = 0; i < fields.length; i++) { 
 
      var p = fields[i].getElementsByClassName('ProfileCard-bio'); 
 
      if (p[0].textContent.length > 1) { 
 
       if (p[0].textContent.match(new RegExp(target), 'g') !== null) { 
 
       console.log(p[0].textContent, 'text matching') 
 
       } 
 
      } 
 
      } 
 
     }, interval); 
 
     } 
 
    })()">Bookmarklet</a>

+1

Haben Sie versucht, die Leerzeichen alle aus dem JavaScript-Code zu entfernen? – inquizitive

+0

Haben Sie versucht, Ihren Code ohne das Zeichen "é" zu testen, obwohl der Browser ein Problem damit hat? In welchen Browsern hast du diesen Code ausprobiert? – freginold

+0

Ich benutze den Chrome Browser –

Antwort

1

hinzufügen Semikolons an den Enden aller Aussagen ist ASI Füllen sie nicht in, wo Sie sie brauchen. Ich werde mir nicht die Mühe machen, herauszufinden, warum, sondern sich einfach angewöhnen, sie immer zu benutzen.

<a href="javascript:(function(){ 
 
     if (!($ = window.jQuery)) { 
 
     script = document.createElement('script'); 
 
     script.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js'; 
 
     script.onload=releasetheScript; 
 
     document.body.appendChild(script); 
 
     } 
 
     else { 
 
     releasetheScript(); 
 
     } 
 
    
 
     function releasetheScript() { 
 
     
 
     regex = ['ceo', 'fondateur', 'cofondateur', 'cto', 'cfo', 'daf', 'startup', 'entrepreneur', 'office manager', 'fintech', 'freelance', 'tech', 'founder', 'neobanque', 'banking', 'comptable', 'incubateur', 'coworking', 'PME', 'VC', 'accélérateur']; 
 
     banned = ['|(?!', 'sex', 'porn']; 
 
     target = regex.join('|') + banned.join('|') + ')'; 
 
     interval = 10000; 
 
     a = setInterval(function() { 
 
      window.scrollTo(0,document.body.scrollHeight); 
 
      var fields = $('.ProfileCard-userFields'); 
 
      for (var i = 0; i < fields.length; i++) { 
 
      var p = fields[i].getElementsByClassName('ProfileCard-bio'); 
 
      if (p[0].textContent.length > 1) { 
 
       if (p[0].textContent.match(new RegExp(target), 'g') !== null) { 
 
       console.log(p[0].textContent, 'text matching') 
 
       } 
 
      } 
 
      } 
 
     }, interval); 
 
     } 
 
    })()">Bookmarklet</a>

2

Ihr Bookmarklet wird als eine einzige Zeile des Skripts ausgeführt werden, so Semikolons nicht optional sind. Ihr Skript schlägt fehl, weil Ihnen Semikolons fehlen.

Zwei seitliche Hinweise:

  • Ihr Code für scheinbar ohne Grund implizite Globals verwendet. Verwenden Sie var, um Variablen zu deklarieren.
  • Sie starten besser die Skript-URL mit // anstatt http://, um sicherzustellen, dass das Skript unabhängig vom Schema der lokalen Seite geladen wird.

<a href="javascript:(function(){ 
 
    if (!window.$ || window.$ !== window.jQuery) { 
 
    var script = document.createElement('script'); 
 
    script.src = '//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js'; 
 
    script.onload=releasetheScript; 
 
    document.body.appendChild(script); 
 
    } 
 
    else { 
 
    releasetheScript(); 
 
    } 
 

 
    function releasetheScript() { 
 
    /* v--- need a semicolon on this line */ 
 
    var regex = ['ceo', 'fondateur', 'cofondateur', 'cto', 'cfo', 'daf', 'startup', 'entrepreneur', 'office manager', 'fintech', 'freelance', 'tech', 'founder', 'neobanque', 'banking', 'comptable', 'incubateur', 'coworking', 'PME', 'VC', 'accélérateur']; 
 
    var banned = ['|(?!', 'sex', 'porn']; /* <-- here */ 
 
    var target = regex.join('|') + banned.join('|') + ')'; 
 
    var interval = 10000; /* <-- here */ 
 
    var a = setInterval(function() { 
 
     window.scrollTo(0,document.body.scrollHeight); 
 
     var fields = $('.ProfileCard-userFields'); 
 
     for (var i = 0; i < fields.length; i++) { 
 
     var p = fields[i].getElementsByClassName('ProfileCard-bio'); 
 
     if (p[0].textContent.length > 1) { 
 
      if (p[0].textContent.match(new RegExp(target), 'g') !== null) { 
 
      console.log(p[0].textContent, 'text matching'); /* <-- and here */ 
 
      } 
 
     } 
 
     } 
 
    }, interval); 
 
    } 
 
})()">Bookmarklet</a>