Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我如何处理数据:img元素填充在我的资源中?_Javascript_Google Chrome Extension_Screenshot - Fatal编程技术网

Javascript 我如何处理数据:img元素填充在我的资源中?

Javascript 我如何处理数据:img元素填充在我的资源中?,javascript,google-chrome-extension,screenshot,Javascript,Google Chrome Extension,Screenshot,请注意数据:img图像。。。我不知道如何从内存和文档中删除它们。图像不包含它们 我正在写一个Chrome扩展。它有点像一个混合的屏幕截图应用程序,基本上当用户滚动时,它会将用户滚动到的屏幕的新部分附加到整个网站的主屏幕截图上(是的,我用过谷歌的屏幕截图应用程序)。我的代码可以工作,但当我将img从扩展传递到内容脚本时,它会将数据:img源存储到内存中我无法访问的某个地方。我尝试了document.images,并测试了它们是否可以在中填充,但没有运气 如果你感兴趣,这是代码 page.js v

请注意数据:img图像。。。我不知道如何从内存和文档中删除它们。图像不包含它们

我正在写一个Chrome扩展。它有点像一个混合的屏幕截图应用程序,基本上当用户滚动时,它会将用户滚动到的屏幕的新部分附加到整个网站的主屏幕截图上(是的,我用过谷歌的屏幕截图应用程序)。我的代码可以工作,但当我将img从扩展传递到内容脚本时,它会将数据:img源存储到内存中我无法访问的某个地方。我尝试了document.images,并测试了它们是否可以在中填充,但没有运气

如果你感兴趣,这是代码

page.js

var ovr = 0;
var run = (window==window.top)?1:0;
if(run&&ovr){
function obj(){
    window.onload = function(){
        obj.conversion = .5;
        obj.screenShot();
        obj.startRecordingScroll();
        obj.showShot(); 
    };

}
obj.showShot = function(){
    obj.fullShot = document.createElement('canvas');
    obj.fullShot.zIndex = -100;
    obj.fullShot.style.position = 'fixed';
    obj.fullShot.style.top = '70px';
    obj.fullShot.style.right = '20px';
    obj.fullShot.style.backgroundColor = '#999999';
    obj.fullShot.width = window.innerWidth*obj.conversion;
    obj.fullShot.height = document.height*obj.conversion;
    document.body.appendChild(obj.fullShot);
    obj.ctx = obj.fullShot.getContext('2d');
};
obj.startRecordingScroll = function(){
    document.onscroll = function(){
        obj.scroll();
    };
};
obj.scroll = function(){
    var pagxoff = window.pageXOffset;
    var pagyoff = window.pageYOffset;
    alert(document.images.length);
    console.log("scroll");
    obj.screenShot();

};
obj.displayScreenShot = function(img){
    console.log('displayScreenShot');
    var ycur = window.pageYOffset;
    var yMaxCur = window.innerHeight+window.pageYOffset;
    var distance = yMaxCur - obj.lastMaxYSeen;
    distance = Math.abs(distance);
    if(!obj.firstRunShot){
        obj.lastMinYSeen = window.pageYOffset;
        obj.lastMinXSeen = window.pageXOffset;
        obj.lastMaxYSeen = (window.innerHeight+window.pageYOffset);
        obj.lastMaxXSeen = (window.innerWidth+window.pageXOffset);
        var shot = document.createElement('img');
        shot.src = img;
        console.log(img);
        shot.onload = function(){
            obj.ctx.drawImage(
                shot,
                0, // 0 right
                0, // 0 down
                window.innerWidth, // viewport width
                window.innerHeight, // viewport height
                0, // 0 right
                0, // 0 down
                window.innerWidth*obj.conversion,
                window.innerHeight*obj.conversion
            );
        };
        obj.firstRunShot = true;
        return;
    }

    if(obj.firstRunShot){
        if(ycur>obj.lastMinYSeen){
            obj.lastMinYSeen = window.pageYOffset;
            obj.lastMinXSeen = window.pageXOffset;
            obj.lastMaxYSeen = (window.innerHeight+window.pageYOffset);
            obj.lastMaxXSeen = (window.innerWidth+window.pageXOffset);
            var xshot = document.createElement('img');
            xshot.src = img;
            xshot.onload = function(){
                obj.ctx.drawImage(
                    xshot,
                    0,
                    window.innerHeight-distance,
                    window.innerWidth,
                    distance,
                    0,
                    (obj.lastMaxYSeen-distance)*obj.conversion,
                    window.innerWidth*obj.conversion,
                    (distance)*obj.conversion
                );
            };
            return;
        }
    }
};
obj.screenShot = function(){
    var port = chrome.extension.connect({
        name: "screenshot"
    });
    port.postMessage({
        request: "screenshot"
    });
    port.onMessage.addListener(function (msg) {
        obj.displayScreenShot(msg);
    });
    console.log('screenShot');
};

var builder = new obj();
}

如果要删除某些资源,可以使用
chrome.devtools.inspectedWindow
API跟踪正在使用的资源以及这些资源的所有内容,并通过删除节点修改DOM

document.images确实包含资源

允许您检查已检查页面中加载的资源,是否将图像加载到已检查页面以显示在此处

如果您试图使用将映像存储到本地磁盘,请记住它们是沙盒的,不能通过其他方式访问

工具书类

这些数据不是:图像对象只是画布元素吗?尝试枚举DOM中的画布,看看它们是否存在。我会检查,我应该只创建一次画布元素,称为fullShot。我认为代码正在创建img元素,并将img元素附加到fullShot中。。。让我们尝试一下outdocument.getElementsByTagName('canvas')。每次滚动时,长度仅显示一个,因此不起作用:(文档有多少帧?你看的是正确的帧吗?我检查的是正确的帧…我没有看到“检查整个DOM”的解决方案,我认为你的意思是有一个元素列表并循环通过它们,然后以这种方式检查它们的内容?