Как получить реферер новой ссылки, открываемой через расширение Chrome? - PullRequest
0 голосов
/ 04 декабря 2011

Я пытаюсь создать для себя расширение для Chrome для автоматического изменения URL-адресов с plus.google.com/XXXX на plus.google.com/u/1/XXXX на веб-страницах всех сайтов, кроме plus.google.com.сам.Я успешно сделал это, однако, он не работает на всех веб-сайтах, тем более что я использую innerHTML и меняю URL-адреса оттуда.

Так что я имел в виду, что перехватывал URL во время загрузкии измените это на полпути.Тем не менее, я хочу знать, от какого реферера он пришел, потому что если на него нажимали изнутри самого plus.google.com, то я не хочу что-либо с ним делать.Я просто хочу использовать функцию изменения URL для ссылок за пределами plus.google.com.

Как я могу сделать это с моим расширением Chrome?

1 Ответ

0 голосов
/ 24 сентября 2012

Мне удалось сделать что-то похожее по концепции через скрипты содержимого и внедрить скрипт на целевой странице. Это не изменяет ссылки на страницах, но вместо этого перенаправляет пользователя на новый URL, если на него не ссылаются с определенного хоста. Я сделал что-то подобное в файле с именем script.js:

if (document.referrer != "") // Check if referrer isn't empty
{
  var referringURL = document.referrer;
  var referrerArray = referringURL.split('/'); // Split the referrer into an array.

  if (referrerArray[2] != "plus.google.com") // Grab the hostname and compare
  {
    location.replace("https://plus.google.com/u/1/"+referrerArray[3]); // Redirect with XXXX
  }
}

И что-то похожее на это будет в манифесте:

  "content_scripts": [
     {
       "matches": [
          "https://plus.google.com/*",
          "http://plus.google.com/*"
       ],
       "js": ["script.js"]
     }
  ]

Я не тестировал этот конкретный код, но он очень похож на тот, который я использовал, который работал довольно хорошо. Это не очень элегантно, я знаю, так что с тех пор я переключился на webRequest / webRequestBlocking, который, на мой взгляд, лучше, но я все еще пытаюсь выяснить, как делать исключения через рефералов. К сожалению, пока не повезло.

...