Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.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 另存为对话框未显示在Chrome扩展中_Javascript_Google Chrome Extension_Save As - Fatal编程技术网

Javascript 另存为对话框未显示在Chrome扩展中

Javascript 另存为对话框未显示在Chrome扩展中,javascript,google-chrome-extension,save-as,Javascript,Google Chrome Extension,Save As,我正在为我的同事和我自己开发chrome扩展。目标是通过单击behance.net上的按钮下载单个图像 问题是,我的一些同事使用“下载前询问每个文件的保存位置”选项,因此代码对他们不起作用。我不使用这个选项,所以下载对我来说是成功的 我试图为chrome.downloads.download()设置不同的选项,但什么都没有。“另存为”对话框未显示 清单 { "name": "Begrab", "description": "D

我正在为我的同事和我自己开发chrome扩展。目标是通过单击behance.net上的按钮下载单个图像

问题是,我的一些同事使用“下载前询问每个文件的保存位置”选项,因此代码对他们不起作用。我不使用这个选项,所以下载对我来说是成功的

我试图为chrome.downloads.download()设置不同的选项,但什么都没有。“另存为”对话框未显示

清单

{
"name": "Begrab",
"description": "Download pics right from Behance",
"version": "1.0",
"manifest_version": 3,
"background": {
    "service_worker": "background.js"
  },
"permissions": ["activeTab", "downloads","tabs", "background"],

"content_scripts": [
  {
    "matches": ["https://*.behance.net/*"],
    "run_at": "document_end",
    "css": ["content.css"],
    "js": ["content.js"]
  }
]}
content.js

window.setTimeout(()=> {
    codeRun();
}, 1000)

let projectLinks = document.querySelectorAll('.ProjectCoverNeue-coverLink-102') 

Array.from(projectLinks).forEach(projectLink => {
    projectLink.addEventListener('click', function(){
        window.setTimeout(()=> {
            codeRun();
        }, 4000)
        
    })
})

function codeRun() {
    let imageParents = document.querySelectorAll('.js-project-lightbox-link');

    Array.from(imageParents).forEach(imageParent => {
        let button = document.createElement('a'),
            buttonCopy = document.createElement('a'),
            buttonsWrap = document.createElement('div'),
            img = imageParent.querySelector('img'),
            controls = imageParent.querySelector('.project-module__actions');

            if(img) {
                button.innerText = "Download";
                button.className = "begrab__btn";
                buttonsWrap.className = "begrab__wrap";

                buttonsWrap.appendChild(button);
                imageParent.appendChild(buttonsWrap)

                button.addEventListener('click', (e) => {
                    let param = {src: img.src,
                    fileName: window.location.href};
                    e.stopPropagation()

                    chrome.runtime.sendMessage(param);
                });
            }
    });
}

chrome.runtime.onMessage.addListener(
  function(arg, sender, sendResponse) {

  if(arg.src){
    
    chrome.downloads.download({
      url: arg.src,
      conflictAction: "prompt"
      }, function (downloadId) {
        console.log(downloadId);
    });
  }
  
});
background.js

window.setTimeout(()=> {
    codeRun();
}, 1000)

let projectLinks = document.querySelectorAll('.ProjectCoverNeue-coverLink-102') 

Array.from(projectLinks).forEach(projectLink => {
    projectLink.addEventListener('click', function(){
        window.setTimeout(()=> {
            codeRun();
        }, 4000)
        
    })
})

function codeRun() {
    let imageParents = document.querySelectorAll('.js-project-lightbox-link');

    Array.from(imageParents).forEach(imageParent => {
        let button = document.createElement('a'),
            buttonCopy = document.createElement('a'),
            buttonsWrap = document.createElement('div'),
            img = imageParent.querySelector('img'),
            controls = imageParent.querySelector('.project-module__actions');

            if(img) {
                button.innerText = "Download";
                button.className = "begrab__btn";
                buttonsWrap.className = "begrab__wrap";

                buttonsWrap.appendChild(button);
                imageParent.appendChild(buttonsWrap)

                button.addEventListener('click', (e) => {
                    let param = {src: img.src,
                    fileName: window.location.href};
                    e.stopPropagation()

                    chrome.runtime.sendMessage(param);
                });
            }
    });
}

chrome.runtime.onMessage.addListener(
  function(arg, sender, sendResponse) {

  if(arg.src){
    
    chrome.downloads.download({
      url: arg.src,
      conflictAction: "prompt"
      }, function (downloadId) {
        console.log(downloadId);
    });
  }
  
});

有人面临同样的问题吗?希望有人能帮助我。谢谢

调试之后,我发现用户出于某种原因取消了下载

事件输出以下内容:

{
“错误”:{
“当前”:“用户\u已取消”
},
“id”:1,
“国家”:{
“当前”:“中断”,
“以前”:“正在进行”
}
}
我能让它工作的唯一方法是将清单降级到v2:

{
“清单版本”:2,
“背景”:{
“执着”:对,
“脚本”:[
“background.js”
]
}
}

我不知道这是否是您的选择。

哇!谢谢你的帮助!在我的工作中,你真的帮助了10个人Dglad我可以帮忙;)