Chrome扩展程序:点击时编辑当前网址,然后重定向到已修改的网址

时间:2015-11-30 03:23:16

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

我是一名心理学学生,我经常阅读论文。大学图书馆提供对数据库的访问,但我需要使用图书馆搜索引擎并每次登录。真烦人我找到了一种避免在页面上跳跃的方法。

以下是方法:

在Google学术搜索中找到论文后,我将“ezp.lib.unimelb.edu.au”添加到目标数据库地址的末尾,然后它将重定向到库登录页面。

例如,论文的地址是:

http://www.sciencedirect.com/science/article/pii/S0006899315008550

我把它修改为:

http://www.sciencedirect.com .ezp.lib.unimelb.edu.au /科学/条/ PII / S000689315008550

我想创建一个Chrome扩展程序,以便在点击时完成此工作(太懒了)。我试了几个小时但是没用。

这就是我所做的:

我在文件夹中有三个文件:

第一个文件:manifest.json

{
  "manifest_version": 2,

  "name": "Damn! Take me to the library!",
  "description": "This extension automatically adds the 'ezp.lib.unimelb.edu.au' to the browser's address, allowing you to visit the databases bought by the library quickly",
  "version": "1.0",

  "browser_action": {
    "default_icon": "unimelb.png",
    "default_title": "Damn! Take me to the library!"
  },
  
  "background":{
    "scripts":["popup.js"]
  },

  "permissions": [
    "activeTab",
    "tabs"
  ]
}

第二个文件:popup.js

function getCurrentTabUrlthenChangeIt(callback) {
  var queryInfo = {
    active: true,
    currentWindow: true
  };

  chrome.tabs.query(queryInfo, function(tabs) {
    
    var tab = tabs[0];

    var url = tab.url;

    callback(url);

    var newurl = url.replace('/',"ezp.lib.unimelb.edu.au/");

    window.location.replace(newurl);


  });

}

第三档:unimelb.png

当我将此文件夹加载到Chrome时,它无效。

这是我第一次使用JS,有人有什么建议吗?

谢谢!

3 个答案:

答案 0 :(得分:2)

制作可在任何浏览器中使用的书签,而不是制作扩展程序会更容易......

  • 右键单击书签栏
  • 选择"添加页面..."
  • 在"名称"下,输入您想要的任何内容"日记重定向"或者其他什么
  • 在"网址"下,复制并粘贴以下代码(无空格)

    javascript:(function(){location.href=location.href.replace('sciencedirect.com/','sciencedirect.com/ezp.lib.unimelb.edu.au/');})(); 
    

现在,当您进入该页面时,请点击该书签,然后重定向您。

更新:在其他域的网址中试用此代码

javascript:(function(){var%20l=location;l.href=l.origin+l.href.replace(l.origin,'ezp.lib.unimelb.edu.au/');})(); 

答案 1 :(得分:2)

即使不点击也可以这样做。您可以将content script用于此URL模式,以便将脚本注入此页面。然后,您可以使用chrome.runtime.sendMessage()向后台脚本发送消息,您的侦听器将在此处创建您想要的链接,然后使用chrome.tabs.update()重新加载选项卡和新网址。

<强>的manifest.json

{
 "name": "My extension",
 ...

  "content_scripts": [{
      "matches": ["http://www.sciencedirect.com/science/article/pii/*"],
      "js": ["content-script.js"]
  }],
  ...
}

内容-的script.js

chrome.runtime.sendMessage({loadURL: true});

<强> background.js

chrome.runtime.onMessage.addListener(function(message, sender, response) {
     if (message.loadURL) {
         var newurl = sender.tab.url.replace("/", "ezp.lib.unimelb.edu.au/");
         chrome.tabs.update(sender.tab.id, {url: newURL})     
     }
);

这是我对StackOverflow社区的第一个回答,我希望它有所帮助。

答案 2 :(得分:0)

的manifest.json

{
  "manifest_version": 2,

  "name": "Damn! Take me to the library!",
  "description": "This extension automatically adds the 'ezp.lib.unimelb.edu.au' to the browser's address, allowing you to visit the databases bought by the library quickly",
  "version": "1.0",

  "browser_action": {
    "default_icon": "unimelb.png",
    "default_title": "Damn! Take me to the library!"
  },
  
  "background":{
    "scripts":["background.js"]
  },

  "permissions": [
    "activeTab",
    "tabs"
  ]
}

background.js

//Wait for click

chrome.browserAction.onClicked.addListener(function(tab) {
  chrome.tabs.executeScript(null, {
  	"file": "popup.js"
  }, function(){ 
  	"popup.js";
  	console.log("Script Executed ...");
  });
})

popup.js

// Change the url to library when on click

var l=location;l.href=l.origin+l.href.replace(l.origin, '.ezp.lib.unimelb.edu.au');

他们运作良好。

完成第一个镀铬扩展程序非常酷。感谢Mottie的帮助。