добавление jQuery, Colorbox и пользовательского кода на страницу через букмарклет - PullRequest
0 голосов
/ 15 ноября 2010

Меня вдохновили букмарклеты Instapaper , которые позволяют добавлять страницы в Instapaper без отдельного всплывающего окна и без необходимости полной перезагрузки страницы. Я хотел бы объединить эту идею с Восхитительным букмарклетом для закладок страниц.

Плагин jQuery Colorbox поддерживает загрузку содержимого iframe во всплывающие окна колобокса, так что это, похоже, хорошее место для начала. Я собрал несколько букмарклетов, чтобы получить приведенный ниже код, который, казалось, неплохо начинался, пока я не добавил строку " $. Fn.colorbox ...". Я не могу заставить Colorbox открыться. Я даже попытался упростить его, чтобы просто открыть страницу надежды Google, но там тоже не повезло:

javascript:
function iprl5(){
  var d=document,z=d.createElement('scr'+'ipt'),y=d.createElement('scr'+'ipt'),x=d.createElement('scr'+'ipt'),b=d.body,l=d.location,t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');
  try{
    if(!b)
      throw(0);
    d.title='(Saving...)%20'+d.title;
    x.setAttribute('src','http://cachedcommons.org/cache/jquery/1.4.2/javascripts/jquery.js');
    y.setAttribute('src','http://cachedcommons.org/cache/jquery-colorbox/1.3.9/javascripts/jquery-colorbox.js');
    b.appendChild(x);
    b.appendChild(y);
    $.fn.colorbox({href:'http://www.delicious.com/save?url='+encodeURIComponent(window.location.href)+'&title='+encodeURIComponent(document.title)+'&v=5&',open:true,iframe:true});
  }
  catch(e){
    alert('Please%20wait%20until%20the%20page%20has%20loaded.');
  }
}
iprl5();
void(0)

1 Ответ

1 голос
/ 15 ноября 2010

Скрипты загружаются в отдельном потоке. Вам нужно подождать, пока скрипт загрузится, прежде чем использовать его. Обычно примерно так:

var checkIfLoaded = function(){
    if($.fn.colorbox){
        // continue your processing
    }else{
        window.setTimeout(200, checkIfLoaded);
    }
}
checkIfLoaded();
...