Показать сообщение отдельно
  #1 (permalink)  
Старый 03.05.2010, 10:59
Аспирант
Отправить личное сообщение для Black_Sun Посмотреть профиль Найти все сообщения от Black_Sun
 
Регистрация: 29.04.2010
Сообщений: 68

Проблемы со скриптом от Оперы
Собственно есть userjs код
Тут самое начало и тут же проблема, как преобразовать в greasemonkey этот код
var cookieName = 'userjs_data';
*!*
opera.addEventListener("BeforeExternalScript",function(l)
 {
   var m=l.element.getAttribute("src",false);
*/!*
   if(m)
   {
     if(m.search(/^http:\/\//i)!=-1&&m.search(/http:\/\/(\w\.)*mysite\.net(:\d+)?\//i)==-1)
     {
       l.preventDefault()
     }
   }
 }
 ,false);

Тут я незнаю чем заменить set(document.getElementById("downl"));
function g()
 {
   if(location.href.search(/^http:\/\/(www\.)?mysite\.net\/download\/.+\.html$/i)!=-1)
   {
*!*
set(document.getElementById("downl"));
*/!*
     var o=document.getElementById("dvdownl");
     if(o)
     {
       if(o.md5crypt&&o.md5crypt.value)
       {
         j(cookieName,e(o.md5crypt.value),0,".mysite.net")
       }
       o.submit()
     }
     return
   }

Тут пытался заменить var l=document.selectNodes("//a[@href]"); на get...byTagName, ...evaluate не вышло
if(location.href.search(/mysite\.net\/tmpl\/download\.php(\?link=)?/i)!=-1)
   {
     if(top!=self&&location.href.indexOf("#userjs")==-1)
     {
       top.location.href=location.href+"#userjs";
       return
     }
*!*
 var l=document.selectNodes("//a[@href]");
*/!*
     for(var m=0;m<l.length;m++)
     {
       if(l[m].href.search(/^http:\/\/(\w+\.)?mysite\.net\/download[\da-f]+\//)!=-1)
       {
         l[m].onclick=null
       }
     }
     var n=f(cookieName);
     k(cookieName,".mysite.net");
 ......

Ну а тут начинается самое интересное, по идее cookies он должен захватывать и преобразовывать или же нет?
function j(m,o,l,n)
 {
   o=o?escape(o):"";
   n=n?n:"";
   l=l?l.toGMTString():"";
   document.cookie=m+"="+o+"; domain="+n+"; path=/; expires="+l
 }
 function f(m)
 {
   var p=m+"=";
   var o=document.cookie.indexOf(p);
   if(o==-1)
   {
     return null
   }
   var n=document.cookie.indexOf(";",o+p.length);
   if(n==-1)
   {
     n=document.cookie.length
   }
   var l=p.length;
   return unescape(document.cookie.substring(o+l,n))
 }
 function k(l,m)
 {
   m=m?m:"";
   document.cookie=l+"=; domain="+m+"; path=/; expires="+new Date((new Date).getTime()-100000000000).toGMTString()
 }


на Опере работает идеально, но в Firefox (greasemonkey) работать на всю мощь отказывается
Вот что мне удалось сделать(изменил только верх, где addEventListener)
var cookieName = 'userjs_data';
 *!*
window.addEventListener("load",function(l)
 {   aelements = document.getElementsByTagName("a");

 for (l=0;l<aelements.length;l++) 
  {
   var m = aelements[l].getAttribute("src",false);
*/!*
   if(m)
   {
     if(m.search(/^http:\/\//i)!=-1&&m.search(/http:\/\/(\w\.)*mysite\.net(:\d+)?\//i)==-1)
     {
       l.preventDefault()
     }
   }
  }
 }
 ,false);


Помогите плиз отладить скрипт и где надо что-то добавить/удалить/изменить и т.п.

p.s. Я так полагаю проблема в cookies и в var l=document.selectNodes("//a[@href]"); и ещё Консоль ошибок показывает что неизвестно l.element

Последний раз редактировалось Black_Sun, 03.05.2010 в 11:58.
Ответить с цитированием