Расширения Chrome, область действия локальной функции in.in.inside (из backgound.js) и использование ее глобально (или в popup.js). - PullRequest
0 голосов
/ 15 сентября 2018

Недавно я хочу начать проект с контрейлерных чей-то расширение .Я хочу выделить один из источников изображения (локальная переменная, URL-адрес base64), а затем фото распознать его на всплывающей странице.Я получаю сообщение об ошибке «imgb64.replace не является функцией» или «imgb64» не определено.

, как сказал мой заголовок, я хочу определить локальную переменную in.in.inside в функции (из backgound.js) и использовать ее глобально (или в popup.js).очень новичок в этом, пожалуйста, помогите, ребята.

// this is popup.js
chrome.runtime.getBackgroundPage(function(bg) {
bg.capture(window);
});

/// what I did

function img_find() {
var imgs = document.getElementsByTagName("img");
var imgSrcs = [];

for (var i = 0; i < imgs.length; i++) {
    imgSrcs.push(imgs[i].src);
}
return imgSrcs;
}

var imgb64 = img_find();

try {
const app = new Clarifai.App({
apiKey: 'mykey'
});
    }

    catch(err) {
alert("Need a valid API Key!");
throw "Invalid API Key";
}

// Checks for valid image type
function validFile(imageName) {
var lowerImageName = imageName.toLowerCase();
return lowerImageName.search(/jpg|png|bmp|tiff/gi) != -1;
}


var imageDetails = imgb64.replace(/^data:image\/(.*);base64,/, '');


console.log(imageDetails)

app.models.predict("e466caa0619f444ab97497640cefc4dc", {base64: 
imageDetails}).then(

  function(response) {

    // do something with response
  },
  function(err) {
    // there was an error
  }
  );

 /// end what I did

ниже представлен background.js, я думаю, что мне нужен локальный var img.src, вот и все.

function capture(popup) {

function callOnLoad(func) {
    popup.addEventListener("load", func);
    if (popup.document.readyState === "complete") {
        func();
    }
}


crxCS.insert(null, { file: "capture.js" }, function() {


    crxCS.callA(null, "get", function(result) {

        var scrShot, zm, bufCav, bufCavCtx;



        function mkImgList() {
            for (var i = 0; i < result.vidShots.length; i++) {
                var img = new popup.Image();
                img.onload = function() {
                    this.style.height = this.naturalHeight / 
(this.naturalWidth / 400) + "px";
                };

                if (result.vidShots[i].constructor === String) {
                    img.src = result.vidShots[i];
                } else {
                    bufCav.width = result.vidShots[i].width * zm;
                    bufCav.height = result.vidShots[i].height * zm;
                    bufCavCtx.drawImage(scrShot, -result.vidShots[i].left * 
zm, -result.vidShots[i].top * zm);
                    img.src = bufCav.toDataURL('image/png');

////// maybe clarifai here ?


////end clarifai
                }

                popup.document.body.appendChild(img);
            }
            popup.onclick = function(mouseEvent) {
                if (mouseEvent.target.tagName === "IMG") {
                    chrome.downloads.download({ url: mouseEvent.target.src, 
saveAs: true, filename: "chrome_video_capture_" + (new Date()).getTime() + 
".png" });
                }
            };
            popup.onunload = function(mouseEvent) {
                crxCS.callA(null, "rcy");
            };
        }   /// end mkImgList

        if (result.needScrShot) {
            bufCav = popup.document.createElement("canvas");
            bufCavCtx = bufCav.getContext("2d");

            chrome.tabs.captureVisibleTab({ format: "png" }, 
function(dataUrl) {
                scrShot = new Image();
                scrShot.onload = function() {
                    chrome.tabs.getZoom(function(zoomFactor) {
                        zm = zoomFactor;
                        callOnLoad(function() {
                            mkImgList(zoomFactor);
                        });
                    });
                };
                scrShot.src = dataUrl;


            });
        } else if (result.vidShots.length) {
            callOnLoad(mkImgList);
        } else {
            popup.document.body.appendChild(notFound);
        }

    });  // end crxCS.callA
});   // end crxCS.insert
}  // end capture

Пожалуйста, помогите, ребята.:)

...