Внедрение Redirect JS в расширение Chrome. Потерпеть поражение! :( - PullRequest
1 голос
/ 04 июня 2011

Я пытаюсь создать расширение, которое хранит мой брат в Facebook. Поэтому я решил, что перенаправлю все ссылки на Facebook в Google для начинающих.

Вот как я это сделал.

Мой файл manifest.json:

{   

  "name": "FBRehab"    
  "version": "1.0",    
  "description": "Redirect FB",    
  "permissions": [    
   "tabs", "http://www.facebook.com/*", "https://www.facebook.com/*"    
],     
  "browser_action": {    
   "default_icon": "icon.png",    
"background_page": "background.html"    
      },
  ]
}

Мой background.html:

<html>
<head>
<script>
  chrome.tabs.executeScript(null, { file: "jquery.js" }, function() {
   chrome.tabs.executeScript(null, { file: "try.js" });
});
</script>
</head>

и try.js

<head>
<script language="JavaScript">
var time = null
function move() {
window.location = 'www.google.com'
}
</script>
</head>

Тем не менее, он не перенаправляет. Я также пытался напрямую ввести try.js, используя скрипты содержимого.

Пожалуйста, помогите мне.

Благодарю вас.

Ашар:)

Ответы [ 3 ]

2 голосов
/ 04 июня 2011

Помните, * Фоновая страница запускается ровно один раз в Chrome, это один долго выполняющийся скрипт, который запускается ровно один раз.

По сути, ваш код теперь делает то, что, как только ваш браузер загружается, он вставляет jquery и пытается Сценарии содержимого на текущей вкладке. У вас нет вкладок, которые в данный момент загружены (что не получится, если у вас нет автоматической загрузки вкладок). Тогда он больше не будет ничего делать, потому что фоновая страница запускается ровно один раз!

Вместо этого вам нужно использовать Content Script , который должен быть определен следующим образом:

// Only execute in the top window, we don't want to inject the iframes.
if (window == top) {
  window.location = 'www.google.com'
}

В вашем манифесте у вас будет следующее:

{
  "name": "No more Facebook extension",
  ...
  "content_scripts": [
    {
      "matches": ["http://*/*", "https://*/*"],
      "js": ["redirect.js"]
    }
  ],
  ...
}
1 голос
/ 04 июня 2011

Я думаю, что вы хотите использовать скрипт содержания вместо фоновой страницы. Вы можете указать, что ваш скрипт контента должен запускаться только на определенных веб-страницах.

0 голосов
/ 04 июня 2011

Вы когда-нибудь вызывали move ()?Мне это не кажется, но я никогда не разрабатывал расширение Chrome ... поэтому я не уверен, вызывается ли оно автоматически

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...