【问题标题】:Chrome extension redirects every frameChrome 扩展重定向每一帧
【发布时间】:2015-10-11 15:34:09
【问题描述】:

所以我写了一个重定向脚本,不幸的是它重定向了每一帧,我是 java 脚本的新手,想弄清楚这个简单的扩展。

ma​​nifest.json

{
  "name": "Flannel is #Winning ",
  "version": "0.2",
  "description": "Checks URL and redirects as required.",
  "background": { 
     "page":"bg.html"
     },
   "manifest_version": 2,
   "content_scripts": [
   {
     "matches": ["http://*/*", "https://*/*"],
     "js": ["content.js", "bg.js"]
   }
   ],
  "permissions": ["tabs","http://*/*", "https://*/*"]
}

bg.html

<html>
<script src="redirect.js"></script>
</html>

content.js

chrome.extension.sendRequest({redirect: newurl});

redirect.js

var url;
var newurl = "http://google.com/";
var newurl1 = "google.com/";

chrome.tabs.query({'active': true, 'lastFocusedWindow': true}, function (tabs) {
    "use strict";
    url = tabs[0].url;
});


function myFunction(url) {
    "use strict";
    if (url !== newurl || url !== newurl1) {
        chrome.extension.onRequest.addListener(function (request, sender) {
            chrome.tabs.update(sender.tab.id, {url: request.redirect});
        });
    }
}

chrome.tabs.getSelected(null, function (tab) {
    "use strict";
    myFunction(tab.url);
});

不幸的是,它刷新每一帧,我试图创建一个函数来检查当前 URL 是否是那个,也许这只是我在 JavaScript 方面的经验不足,但我想通过编写我的第一个 chrome 扩展来挑战自己,我'米难住了。任何指针或指向任何类型的文档以指向我的写入方向将不胜感激。

更新

我已经尝试过这个以及它的其他变体,它完全没有被注入到 content.js 脚本中的代码重定向

chrome.tabs.query({'active': true, 'lastFocusedWindow': true}, function (tabs) {
"use strict";
url = tabs[0].url;
myFunction(url);

});

function myFunction(url){
   if(url !== newurl){
       chrome.extension.sendRequest({redirect: newurl});
}

}

【问题讨论】:

  • 据我所知,您在每个页面中都“注入”了 content.js - chrome.extension.sendRequest({redirect: newurl});
  • @JaromandaX 检查更新并给出任何建议,我不知道如何只注入一次页面重定向。
  • 对不起,丹,我对 chrome 扩展了解不多,无法提供帮助,我只发表了评论(而不是回答),因为从我对 chrome 扩展的了解很少,看起来你是在每一页中注入那段代码。如果我对 chrome 扩展更有经验,我会发布 answer 而不是评论
  • @JaromandaX 没问题任何帮助我一直很感激。只是想无论如何我都会在混合中添加更多代码以显示更多混乱,嘿,这看起来应该可以工作,但它没有,并且没有任何错误,最终的混乱错误。
  • 你能解释一下你的目标是什么吗?重定向不是 google.com 的每个页面?因为有一种比你设置的所有不同部分更简单的方法。此外,“if (url !== newurl || url !== newurl1)”总是正确的。我认为你的意思是 &&,而不是 ||

标签: javascript google-chrome redirect google-chrome-extension


【解决方案1】:

我通过在 content.js 中执行此操作解决了这个问题

if (window.location.href !== newurl) {
    window.location.href = newurl;
}

感谢大家的帮助!

【讨论】:

  • 这确实是一个更简单的解决方案。
猜你喜欢
  • 1970-01-01
  • 2012-08-17
  • 2012-03-17
  • 2016-11-05
  • 2014-08-17
  • 1970-01-01
  • 2016-02-08
  • 2018-08-21
  • 1970-01-01
相关资源
最近更新 更多