2013-11-15 3 views
-1

У меня есть этот маленький маленький скрипт, который я запускаю внутри Chrome с помощью Tampermonkey и отлично работает.Почему этот простой сценарий входа работает в Tampermonkey, но не Greasemonkey?

Однако, когда я использую его в Firefox с Greasemonkey, он отображается в активном списке, что означает его соответствие странице, но фактически не выполняет код. Я знаю, что это должно быть просто то, что я пропускаю, но это не ударяет меня.

var myVar=setInterval(function(){myTimer();},100); 

function myStopFunction() 
{ 
    clearInterval(myVar); 
} 

function myTimer() 
{ 
    var p1 = "Login"; 
    var p2 = "mode=login"; 
    var x = document.body.innerHTML; 

     if (x.match(p1) && x.match(p2)){ 
      document.documentURI = "/ucp.php?mode=login"; 
     } 
    myStopFunction(); 
} 

Script Logic/Функция

  1. Я использую таймер, чтобы предотвратить сценарий от запуска снова и снова в постоянном цикле.
  2. Он просто обнаруживает, что я зарегистрирован на форуме phpBB или нет, если не отправил меня на страницу входа, поэтому я могу войти в систему.
  3. Я использую URI документа, так что расположение оригинала сохраняется так логин, он возвращает меня обратно к нему.
  4. Часто phpBB, когда вы входите в систему, возвращает вас на страницу индекса, так что это сохраняет мое первоначальное намерение перейти к фактической ссылке.

Этот скрипт работает отлично и, как ожидалось, в Chrome с использованием TM, но на Firefox с использованием GM он не запускается, я чего-то не хватает?

ответ

1

От the Firefox spec:

(document.documentURI)
Возвращает местоположение документа в виде строки. Это только для чтения по спецификации DOM4.

И действительно, the latest spec все еще указывает, что этот атрибут должен быть доступен только для чтения.

Если Chrome позволяет вам записать это свойство, то это нестандартное поведение и, возможно, ошибка.

Используйте location.assign() или location.replace() или просто программно нажмите кнопку входа в систему, которая часто сохраняет целевую страницу.

+0

Мой спаситель. Как ты там друже. Спасибо за это, я не могу поверить, что я пропустил это. Теперь я помню, что это была одна из причин, по которой я использовал TM/Chrome для нескольких моих сценариев, включая этот. Позвольте мне поиграть с двумя вами, о которых вы говорили, и посмотреть, с чем я пришел, и я отправлю ответ либо разрешен, либо нет. Еще раз спасибо. –

+0

Ну, как и обещал, я попробовал, и 'assign()' не работает, теряет ссылку после ее завершения и, к сожалению, встроенный gui не возвращает вас к ссылке, которая привела вас туда, когда вы нажимаете на логин, иначе Я бы не стал беспокоиться об этом :(Я пробовал так много разных вещей, что к тому времени, когда я был сделан, это было похоже на сложность, а не простое, я сдался. Если вы думаете, что можете помочь мне с этим быстро, не слишком много с вашей стороны, я был бы благодарен, но я не хочу, чтобы вы тратили время, если это не простое решение, не стоит тратить свое время. Спасибо, приятель. –

+0

Вопрос: «Почему этот скрипт работает в Chrome, но не Firefox ». На этот вопрос был дан ответ. Обычно существуют способы обращения к исходной странице с помощью phpBB, но phpBB, по-видимому, не имеет отношения к этому вопросу;) и нам нужна ссылка на конкретный веб-сайт, чтобы быть абсолютно конечно. Общий случай возможен, но: больше работы, зависит от сайта и выходит за рамки того, что здесь задают. Задайте новый вопрос об обходном пути. –

Смежные вопросы