Внешний Javascript букмарклет не работает - PullRequest
1 голос
/ 03 июля 2010

Это простой javascript bookmarklet, который захватывает заголовок, URL и выделенный текст. Чтобы убедиться, что он отлично захватывает заголовок (только заголовок), мне пришлось сделать этот букмарклет длинным. Он прекрасно работает, если я редактирую букмарклет вручную. Его слишком долго перетаскивать, как обычный букмарклет. Но я много пробовал через другой способ сделать внешний способ javascript. Я не мог сделать это. Я использовал google sites в качестве хост-сайта для файла 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'));

Можете ли вы помочь мне? Как я могу поместить этот скрипт во внешний файл JS и загрузить его?

1 Ответ

3 голосов
/ 03 июля 2010

Букмарклет обычно загружает тег <script>, который затем выполняет все остальное.Это уменьшает размер букмарклета.Что-то вроде:

javascript:(function(){

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

})();

Обязательно отредактируйте "http://yoursite.com/external.js" part.

...