所以我写了一个重定向脚本,不幸的是它重定向了每一帧,我是java脚本的新手,想弄清楚这个简单的扩展。
manifest.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 是否是那个 URL,也许这只是我在 JavaScript 方面的经验不足,但我想通过编写我的第一个 chrome 扩展来挑战自己,我'我难住了。任何指针或指向任何类型的文档以指导我编写方向将不胜感激。
更新
我也尝试过这个以及它的其他变体,在 content.js 脚本中注入(inject)此代码时它根本没有重定向
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 中这样做来解决这个问题
if (window.location.href !== newurl) {
window.location.href = newurl;
}
感谢大家的帮助!
关于javascript - Chrome 扩展程序会重定向每一帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31551616/