Chrome扩展程序>如何在特定页面重新加载时运行代码?

时间:2016-08-15 16:06:26

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

第一篇文章和新程序员提前道歉。我正在尝试编写一个可以在工作中使用的扩展程序(我是测试人员)。我们使用自制的自动化测试包,它可以使用我们自己的自定义框架。其中一项自动化任务是假设日期'。我正在寻找可以手动完成的扩展程序。

手动执行此操作的步骤是

  1. 删除'?'之后的所有内容。在网址
  2. 将自定义setLocalDate& Time网址添加到最后(包含您需要的日期)
  3. 关注该网址
  4. 删除'?'之后的所有内容再次
  5. 转到该网址
  6. 通过查看示例并在此处提出一些问题,我可以完成第3步(可能非常糟糕,但是嘿,它确实做了它应该做的事情)。我还没有添加任何内容来自定义选择日期,稍后会发布,我只是想先把这些步骤放下来。

    我的问题是,我想我想在步骤3完成时添加一个onUpdate函数。然后我可以用原始网址填写网址并按照说明。我虽然无法做到这一点。这是我的内容脚本,自定义网址在第7行。我注释了更新功能,因为它不适合我,我应该将它嵌套在第一个监听器中吗?)

    // content.js
    chrome.runtime.onMessage.addListener(
      function(request, sender, sendResponse) {
        if( request.message === "clicked_browser_action" ) {
          var firstURL = $("a[href*='g.e']").eq(0).attr("href");
          firstURL = firstURL.substring(0, firstURL.indexOf('?'));
          var newURL = firstURL.concat("?Web.Test.Command=setLocalDate&date=01-07-2017");
          chrome.runtime.sendMessage({"message": "open_new_tab", "url": newURL});
        }
      }
    );
    
    //chrome.tabs.onUpdated.addListener(
    //  function(request, sender, sendResponse) {
    //    if( request.message === "date_completed" ) {
    //      var newPage = $("a[href*='g.e']").eq(0).attr("href");
    //    newPage = newPage.substring(0, newPage.indexOf('?'));
    //    chrome.runtime.sendMessage({"message": "date_completed", "url": newPage});
    //    }
    //  }
    //);
    

    这是我的后台脚本

    // background.js
    
    // Called when the user clicks on the browser action.
    chrome.browserAction.onClicked.addListener(function(tab) {
      // Send a message to the active tab
      chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
        var activeTab = tabs[0];
        chrome.tabs.sendMessage(activeTab.id, {"message": "clicked_browser_action"});
    
      });
    });
    
    //Receives the message from onMessage
    chrome.runtime.onMessage.addListener(
      function(request, sender, sendResponse) {
        if( request.message === "open_new_tab" ) {
          chrome.tabs.update({"url": request.url});   
        }
        else if( request.message === "date_completed" ) {
          chrome.tabs.update({"url": request.url});
        }
      }
    );
    
    //Receives the message from onUpdated
    chrome.tabs.onUpdated.addListener( function (tabId, changeInfo, tab) {
      chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
        var activeTab = tabs[0];
        chrome.tabs.sendMessage(activeTab.id, {"message": "date_completed"});
      });
    });
    

    那些负荷可能已经过时了。再说一遍,如果这没有意义,请告诉我,如果你想让我澄清一下,请告诉我。

    tldr:我想在点击浏览器操作并加载该页面时转到特定网址,然后再转到另一个网址

0 个答案:

没有答案