5

Tôi đang cố gắng để viết một js bookmarklet giống như Đoạn có thể được chạy từ các công cụ phát triển giao diện điều khiển sẽ cung cấp src cho hình ảnh trong trang:Có thể javascript trong bảng điều khiển công cụ dành cho nhà phát triển tải xuống/lưu tệp hay là hộp cát này không?

var x = ["PA633", "PA10", "PA11"]; 
function nextPage(i) { 
    $('#viewport div:first-child').animate({scrollTop: i}, 200); 
    i+=1020; 
    if (i < 20000) { setTimeout(nextPage, 200, i); } 
    for (index = 0; index < $('div.pageImageDisplay img').length; ++index) { 
     var page = /&pg=([A-Z]{2,3}\d+)&/.exec($('div.pageImageDisplay img')[index].src); 
     if ($.inArray(page[1], x) != -1) { 
      x.splice(x.indexOf(page[1]), 1); 
      var embiggen = $('div.pageImageDisplay img')[index].src.replace(/&w=\d+$/, "&w=1200"); 
      console.log(embiggen); 
     } 
    } 
} 

kịch bản này hoạt động ở chỗ nó cung cấp chính xác liên kết src cho mỗi hình ảnh. Có cách nào để tải xuống javascript/lưu từng liên kết tự động không? Có thể nhấp vào từng liên kết (Chrome sẽ mở các liên kết này trong một tab mới), nhưng hơi tẻ nhạt để làm như vậy.

Cách thích hợp để làm điều đó là để đoạn mã javascript lưu hình ảnh vào thư mục tải xuống, nhưng tôi có khái niệm mơ hồ rằng điều này là không thể. Có thể, và nếu như vậy làm thế nào có thể được thực hiện?

Xin lưu ý rằng javascript này sẽ không được bao gồm trong trang web trực tiếp, nhưng có nghĩa là cụ thể để chạy từ bảng điều khiển công cụ dành cho nhà phát triển.

Trả lời

4

Điều này yêu cầu một số bộ phận khác nhau hoạt động. Trước hết, nó là cần thiết để thêm (trừ khi bạn có thể tái sử dụng hiện có) liên kết tới trang với một cái gì đó như thế này:

$("body").append($("<a id='xyz'/>")); 

Sau đó, bạn cần phải thiết lập các href của liên kết với các tập tin được tải về :

 $('#xyz').attr("download", page[1] + ".png"); 
     $('#xyz').attr("href", embiggen); 

Lưu ý rằng chúng tôi cũng có thể (tự động đặt trong Chrome ít nhất) đặt tên tệp, thông qua thuộc tính tải xuống.

Cuối cùng, javascript có thể đưa ra một sự kiện nhấp chuột vào thẻ neo chính nó với:

 $('#xyz')[0].click(); 

Khi điều này chạy, nó sẽ tự động tải các tập tin. Đặt tên tệp dường như cũng ngăn không cho nó bật lên hộp thoại tệp.

Các vấn đề liên quan