如何通过Chrome扩展程序获得新链接的推介人?

时间:2011-12-03 22:17:49

标签: javascript url google-chrome-extension google-plus

我正在尝试为自己创建一个实用工具镀铬扩展程序,以自动将所有网站上的plus.google.com/XXXX中的网址更改为plus.google.com/u/1/XXXX,不包括plus.google.com本身。我已经成功地做到了这一点,它并不适用于所有网站,特别是因为我正在使用innerHTML并从那里更改URL。

所以我想到的是在加载时捕获URL并在中途更改它。但是,我想知道它来自哪个引荐来源,因为如果从plus.google.com本身点击它,那么我想要对它做任何事情。我只想对plus.google.com以外的链接使用网址更改。

如何使用Chrome扩展程序进行此操作?

1 个答案:

答案 0 :(得分:0)

我能够通过content scripts在概念上做类似的事情并在目标页面上注入脚本。这不会更改页面中的链接,而是将用户转发到新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,我认为这更好,但我仍然试图找出如何通过引用来做排除。不幸的是,那部分没有运气。