2015-10-04 99 views
1

我想在用户单击我创建的Chrome扩展时基于当前页面的值填写外部网页上的表单。从Chrome扩展的外部网页填写表格

所以我试图做的就是打开的网页,并通过首先使用这种从popup.js文件的消息。

chrome.tabs.create({url: "http://localhost:49177/ProDATA/Add.aspx"},function(tab){ 
    chrome.tabs.sendRequest(tab.id, {FirstName: FirstName}, function(response) { 
    console.log(response.farewell); }) 
    }); 

然后在add.aspx页面上,这个页面与用户所在的页面位于不同的域中,我尝试这样做。

//add listener for chrome extension 
    var FirstName = ''; 
    function LoadEventListener() 
    { 
     alert('test'); 

     chrome.runtime.onMessage.addListener(function (request, sender, response) {     
      FirstName = request.FirstName; 
      alert(FirstName); 
     }); 
    } 

我从正文onload事件中加载“LoadEventListener”。并警告“测试”显示,因此它确实加载,但我没有看到“名字”警报。

有人可以帮忙吗?

回答

2
  • 特权Chrome *在现代Chrome浏览器的网页中,API默认不起作用。

    URL应该通过在清单"externally_connectable"被明确允许(请参阅链接的代码示例)。

    或使用tabs.executeScriptinject DOM访问代码而不是tabs.sendRequest

  • 的医生说,因为浏览器33. chrome.tabs.sendMessage而不是tabs.sendRequest已被弃用。

+0

感谢您的答复,但我仍然无法让它工作。看来这些方法主要用于将数据从网页传递到扩展,我想要做反向。 – Eliseo

+0

本质上,我想创建一个选项卡,并从用户点击扩展的位置抓取数据,并在新创建的选项卡上填充字段。 – Eliseo

+1

然后声明一个[内容脚本](https://developer.chrome.com/extensions/content_scripts),它将自动注入到'http:// localhost:49177/ProDATA/Add.aspx'网址,并在该脚本中将能够使用'chrome.runtime.onMessage'。 – wOxxOm