2015-10-04 101 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