如何将连接到外部数据库的外部php文件中的数据发送到扩展程序的content-script.js?

时间:2019-04-10 13:01:41

标签: javascript php mysql ajax xmlhttprequest

我正在构建一个扩展程序,该扩展程序从网站(不是我的网站)中提取DOM,并自动完成一些输入的按钮单击。

输入中填充了我从创建的数据库(而不是网站的数据库)中提取的值。提取是使用php完成的,但填充是使用content-script.js中的javascript进行的。我想要的是,使php文件将这些值发送到我的内容脚本文件,并等待单击即响应,然后更新数据库。

当我使用XMLHttpRequest时,出现一个我无法访问的错误,并且被CORS策略阻止。

$(document).ready(function(){
   function reqListener () {
   console.log(this.responseText);
}

var oReq = new XMLHttpRequest();
oReq.addEventListener("load", reqListener);
oReq.open("GET", "http://localhost:8012/extension/php/getIntervenant.php");
oReq.send();
});

我的manifest.json文件

{
  "manifest_version": 2,
  "version": "1",
  "name": "Extention ",
  "description": "Extracting and attributing",
  "content_scripts": [{
      "matches": ["link here"],
      "js":["jquery-3.3.1.min.js", "content-script.js"],
      "run_at": "document_start"
    }],
    "background": {
      "scripts": ["background.js"],
      "persistent": false
    },
    "browser_action": {
        "default_popup": "popup.html",
        "default_title": "Extention"
    },
    "permissions": ["unlimitedStorage"]
}

1 个答案:

答案 0 :(得分:1)

代替:

function getXPathOfElement(elt)
{
     var path = "";
     for (; elt && elt.nodeType == 1; elt = elt.parentNode)
     {
    idx = getElementIdx(elt);
    xname = elt.tagName;
    if (idx > 1) xname += "[" + idx + "]";
    path = "/" + xname + path;
     }

     return path;   
}
function getElementIdx(elt)
{
    var count = 1;
    for (var sib = elt.previousSibling; sib ; sib = sib.previousSibling)
    {
        if(sib.nodeType == 1 && sib.tagName == elt.tagName) count++
    }

    return count;
}

应该是:

"permissions": ["unlimitedStorage"] 

检查:https://developer.chrome.com/extensions/xhr