1 votes

Le bookmarklet Javascript externe ne fonctionne pas

C'est un simple bookmarklet javascript qui récupère le titre, l'URL et le texte sélectionné. Pour être sûr qu'il saisisse parfaitement le titre (juste le titre), j'ai dû rendre ce bookmarklet long. Il fonctionne très bien si j'édite le bookamrklet manuellement. Il est beaucoup trop long pour être glissé et déposé comme un bookmarklet habituel. Mais j'ai essayé plusieurs fois de faire un chemin externe en javascript. Je n'y suis pas arrivé. J'ai utilisé sites google comme site d'hébergement du fichier JS.

     javascript: 
q=(document.location.href);
t=(document.title); 
tt=t.lastIndexOf('|');
if(tt>-1) title=t.substring(0,tt);
else 
{ 
if(t.lastIndexOf('%E2%80%A2')>-1) title=t.substring(0,t.lastIndexOf('%E2%80%A2'));
else if(
t.lastIndexOf('%C2%AB')>-1) title=t.substring(0,t.lastIndexOf('%C2%AB')); 
      else { title=t; } }
if(q.search("inblog")!=-1) 
{ x=title.lastIndexOf('-'); title=title.substring(0,x); }
else if(q.search("m-alo.com")!=-1) 
{ x=title.lastIndexOf('-'); title=title.substring(x+2); }
else if(q.search("blog4")!=-1) 
 { x=title.indexOf('|'); title=title.substring(x+2,title.length); }   
else if(q.search("blogspot")!=-1) 
{ x=title.indexOf(':'); title=title.substring(x+2,title.length); }
else if(q.search("blog")!=-1)          title=document.getElementsByTagName('h2').item(0).innerHTML; 
else if(q.search("arts")!=-1) 
{ x=title.lastIndexOf('%C2%BB'); title=title.substring(x+2); } 
else if(q.search("sports")!=-1||q.search("tech")!=-1)      title=document.getElementsByTagName('h1').item(0).innerHTML;
else if(q.search("blog2")!=-1) { title=document.getElementsByTagName('h1').item(0).innerHTML; x=title.lastIndexOf('">'); title=title.substring(x+4,title.length-4); }
d=document,s=''; 
if(d.getSelection) s=d.getSelection(); if(d.selection) s=d.selection.createRange().text;
if(window.getSelection) s=window.getSelection();
void(open('http://domain.com/submit?url='+encodeURIComponent(q.replace(/[#].*/,''))+'&title='+encodeURIComponent(title)+'&body='+encodeURIComponent(s),'',
'resizable,location,menubar,toolbar,scrollbars,status'));

Pouvez-vous m'aider ? Comment puis-je mettre ce script dans un fichier js externe et le charger ?

3voto

Luca Matteis Points 19338

Un bookmarklet charge généralement un <script> qui se charge ensuite de faire le reste du travail. Cela réduit la taille du bookmarklet. Quelque chose comme :

javascript:(function(){

var head = document.getElementsByTagName("head")[0];
var script = document.createElement("script");
script.src = "http://yoursite.com/external.js";
head.appendChild(script);

})();

Assurez-vous de modifier la partie "http://yoursite.com/external.js".

0voto

Salman A Points 60620

Si je comprends bien votre question, c'est ce que vous recherchez :

http://refresh-sf.com/yui/

Il s'agit d'une version en ligne de Compresseur YUI . Il compacte votre code en une seule ligne et l'obscurcit (en option).

0voto

roboticman Points 168
javascript:(function(){

var head = document.getElementsByTagName("head")[0];
var script = document.createElement("script");
script.src = "http://sites.google.com/site/mysite/s3.js";
head.appendChild(script);

})();

J'ai mis le code suivant dans ce fichier

var q=(document.location.href);
var t=(document.title); 
var tt=t.lastIndexOf('|');
if(tt>-1) var title=t.substring(0,tt);
else 
{ 
if(t.lastIndexOf('%E2%80%A2')>-1) title=t.substring(0,t.lastIndexOf('%E2%80%A2'));
else if(
t.lastIndexOf('%C2%AB')>-1) title=t.substring(0,t.lastIndexOf('%C2%AB')); 
      else { title=t; } }
if(q.search("inblog")!=-1) 
{ x=title.lastIndexOf('-'); title=title.substring(0,x); }
else if(q.search("m-alo.com")!=-1) 
{ x=title.lastIndexOf('-'); title=title.substring(x+2); }
else if(q.search("blog4")!=-1) 
 { x=title.indexOf('|'); title=title.substring(x+2,title.length); }   
else if(q.search("blogspot")!=-1) 
{ x=title.indexOf(':'); title=title.substring(x+2,title.length); }
else if(q.search("blog")!=-1)          title=document.getElementsByTagName('h2').item(0).innerHTML; 
else if(q.search("arts")!=-1) 
{ x=title.lastIndexOf('%C2%BB'); title=title.substring(x+2); } 
else if(q.search("sports")!=-1||q.search("tech")!=-1)      title=document.getElementsByTagName('h1').item(0).innerHTML;
else if(q.search("blog2")!=-1) { title=document.getElementsByTagName('h1').item(0).innerHTML; x=title.lastIndexOf('">'); title=title.substring(x+4,title.length-4); }
var d=document,var s=''; 
if(d.getSelection) s=d.getSelection(); if(d.selection) s=d.selection.createRange().text;
if(window.getSelection) s=window.getSelection();
void(open('http://domain.com/submit?url='+encodeURIComponent(q.replace(/[#].*/,''))+'&title='+encodeURIComponent(title)+'&body='+encodeURIComponent(s),'',
'resizable,location,menubar,toolbar,scrollbars,status'));

Il ne fonctionne toujours pas

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X