проблема запуска скриптов на Facebook - PullRequest
0 голосов
/ 14 февраля 2011

Привет всем, поэтому я только что сделал небольшой скрипт greasemonkey для Google Chrome, который должен убрать эту надоедливую новую функцию просмотра фотографий, добавленную Facebook.все, что он делает, это удаляет "& Theatre" в конце URL.Моя первая попытка состояла в том, чтобы сделать это в одной строке.

if (window.location.toString().indexOf('www.facebook.com') >= 0) {
    window.location.href = window.location.href.replace(/(&theater)$/, '');
}

Но это просто заставляло страницу постоянно перезагружаться, выполняя скрипт снова и снова.Так что я решил поместить этот код в функцию, вызываемую при загрузке страницы.Мой код теперь выглядит так:

window.onload = function()
{
if (window.location.toString().indexOf('www.facebook.com') >= 0) {
    window.location.href = window.location.href.replace(/(&theater)$/, '');
}
}

Моя проблема в том, что при загрузке страницы facebook никогда не вызывается window.onload.Это работает для других веб-сайтов (я поместил предупреждение внутри функции, чтобы проверить, вызывается ли она).Есть предложения?

Ответы [ 3 ]

0 голосов
/ 14 февраля 2011

Может быть, вам разрешен только один window.onload, и Facebook, вероятно, уже использует его?

См. alert(window.onload) ...

Facebook

0 голосов
/ 14 февраля 2011

Если бы у onload было сработало, у вас все равно был бы бесконечный цикл - только дольше между перезагрузками.:)

В большинстве ситуаций ... Чтобы избежать цикла, установите флаг, который сохраняется между нагрузками.Самый простой способ сделать это - создать параметр URL.

Но в этом случае вы можете просто изменить то, что вы ищете (пока).

Что-то вроде:

if ( /&theater/i.test (window.location.href) )
{
    window.location.href = window.location.href.replace(/(&theater)$/, '');
}
0 голосов
/ 14 февраля 2011

Вы создали бесконечный цикл обновления, потому что вы обновляете страницу, даже если вы находитесь на URL, на который вы перенаправлены.Вы бы лучше сделали оператор if, подобный этому:

if ((window.location.host === 'www.facebook.com') && window.location.pathname.indexOf('&theater') > -1) {
  // redirect here
}
...