网页js运行及上传文件(mv3) 非公开

涛涛涛 更新于 2天2小时前 | 0 | (0) | 1
分类
点赞
暂无
更多信息
分享人 涛涛涛
分享时间 2天3小时前
最后更新 2天2小时前
修订版本 1
子程序大小 7.1 KB
Quicker版本 1.44.10.0

介绍

网页js运行及上传文件

本地的网页可能不能使用(file:///开头的,可能是本地域不同造成的,Runtime.evaluate里面的限制)

原理代码:

async function 运行js代码并上传文件(e) {

            let { tabId: t, jsdm: h ,files:g } = e;

            var n={tabId: t};

            let a= await chrome.debugger.attach(n, "1.3");

            a= await chrome.debugger.sendCommand(n, "Runtime.evaluate", {expression:h});//运行js代码并获取元素文件框的objectId

            let objectId=a.result.objectId;   //获取元素文件框的objectId

            await chrome.debugger.sendCommand(n, "DOM.setFileInputFiles", { objectId:objectId, files:g})       //上传文件路径

}


js代码格式为上面为运行代码,

var gg=window.frames[1];                                                   //切换到指定框架,从顶层框架里查找frames的位置,并切换到frame框架里面

gg.document.querySelector('#textInput').value=123;       //指定框架运行的js代码

gg.aa=[1,2,3,4,5];                                                                  //向框架中声明全局变量aa

gg.document.querySelector('#fileInput');                          //获取框架中元素文件框的objectId,一定要放到最后一行,为上传文件准备

最后一行一定要为文件框元素,例如:gg.document.querySelector('#fileInput'),这样就可以获取到获取元素文件框的objectId,不要写属性


注意:使用Runtime.evaluate直接在js代码上切换到指定框架【window.frames[1]】,获取框架中元素文件框的objectId【gg.document.querySelector('#fileInput');   】,这一步很关键


//参数说明

tabId:  调试目标

jsdm: js代码

files:  需要上传文件的路径数组



//参数示例

{

tabId:  779853286,

jsdm: `var gg=window.frames[1];

          gg.document.querySelector('#textInput').value=123;

          gg.aa=[1,5,9,833,5];

          gg.document.querySelector('#fileInput');`,

files: ["C:/Users/Administrator/Desktop/11.png"]

}

子程序的参数

输入
选项 Text
网页tabId Text
js代码 Text
文件路径 支持多行文件路径,不要随意添加换行 List
输出
objectId 默认的文本变量 Text

最近更新

修订版本 更新时间 更新说明
1 2天2小时前 1
0 2天3小时前

最近讨论

暂无讨论