使用chrome扩展来打开另一个选项卡并在DOM中执行某些操作

时间:2017-06-29 17:59:45

标签: javascript google-chrome-extension

我正在尝试构建一个简单的chrome扩展来从页面获取值并在之后填充第二页。  我是chrome扩展程序的新手,我真的只是为了让我必须做的事情变得更简单。

所以我得到了打开第一页的部分,获得了我需要的值,然后在另一个选项卡中打开第二页。现在我不确定如何填充这个领域。

由于我已经拥有了content.js的值,是否可以知道其他选项卡何时加载,只是查找我需要将该值放入的字段?或者还有另一种方法吗?我无法让它工作..我也试图听取页面加载,但我不认为这会对我有所帮助,因为我只对一个特定的页面感兴趣。

清单:

{
  "manifest_version": 2,
  "name": "my Extension",
  "version": "1",
  "content_scripts": [
      {
        "matches": [
          "<all_urls>"
        ],
        "js": ["jquery-3.2.1.min.js", "content.js"]
      }
  ],
  "browser_action": {
    "default_icon": "icon.png"
  },
  "background": {
    "scripts": ["background.js"]
  }
}

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"});
  });
});

// 
chrome.runtime.onMessage.addListener(
  function(request, sender, sendResponse) {
    if( request.message === "open_new_tab" ) {

      chrome.tabs.create({"url": request.url}, 
                         function(tab){ alert(tab.id) });

    }
  }
);

chrome.tabs.onUpdated.addListener(function (tabId , info) {
  if (info.status === 'complete') {
    chrome.tabs.sendMessage(activeTab.id, {"message": "page_loaded"});
  }
});

content.js

chrome.runtime.onMessage.addListener(  
    function(request, sender, sendResponse) {        

        if( request.message === "clicked_browser_action" ) {

          var myUrl = "http://www.google.com";

            var myValue = document.getElementById("thisId").value;
            if(myValue ) {

                chrome.runtime.sendMessage({
                    "message": "open_new_tab", 
                    "url": myUrl, 
                    "myValue ": myValue 
                });
            }
        }   

        if( request.message === "page_loaded" ) {
            alert("hi");

        }    

});

0 个答案:

没有答案