【问题标题】:Select all images on Pinterest for moving to another board选择 Pinterest 上的所有图像以移动到另一个图板
【发布时间】:2016-01-14 12:30:09
【问题描述】:

更新:(2015-10-16) [已解决!] -- 已使用 trigger() 修复,并通过 slice() 限制为 50 个引脚。

非常感谢Abhas Tandon 提供的使用

$(this).trigger('click');

而不是

$(this).addClass('selected');

它将正确选择图像。我用一个包含 21 个图像的电路板进行了测试,效果非常好!但是,当尝试移动 300 多个引脚时,它失败并出现以下错误:

"You can only move 50 Pins at a time." 

然后我通过使用 JavaScript 的 slice() 函数仅抓取前 50 张图像解决了这个问题。经过测试,它现在可以正常工作。所以我目前的限制是一次只能选择和移动 50 个图钉,但这比必须手动一个一个地选择要好得多!


最终工作代码:

function checkAll() {
    console.log("Checkboxes count: " + checkBoxes.length);

    $.each(checkBoxes, function(i, v) {
      console.log("Checkbox #: " + i)// + " = " + v);
      $(this).trigger('click');

    });
}

var checkBoxes = $("div > div > div.bulkEditPinWrapper > button");

var checkBoxes = checkBoxes.slice(1, 51);

checkAll();




问题描述:

我正在开发的 Pinterest 界面 (?) 脚本 (?) 遇到问题。我是一名程序员,主要是自学成才,我想我可能缺少了解 AJAX 的一些关键组成部分?这是我第二次尝试编写 jQuery 脚本来与 Pinterest 交互。第一个是尝试破坏无限滚动功能(也称为“加载更多”按钮),以便将所有图像显示在一个页面上,我可以从中抓取图像链接,然后使用浏览器插件下载它们以备份我的 Pinterest板到我的电脑。我的代码一切正常,只是它实际上并没有下载任何图像。

很失望,我把它搁置了,专注于其他事情。最终我重新访问了我的代码并进行了一些挖掘,它应该可以工作。我的研究表明,可能阻止我的程序执行我想要的操作的关键缺陷与“Pinterest 使用 AJAX”有关。虽然我知道“带有 XML 的异步 JavaScript”和“XMLHttpRequest”这两个术语,但在实现 AJAX 方面我并不是专家。

用我最新的代码,我写了一个——你会认为它是——快速的小 jQuery 脚本来选择所有图像,以便我可以移动它们、删除、复制等......问题是虽然检查所有的框都有效(例如,您必须在一个板上并单击“移动”),当我第二次单击“移动”按钮时,它应该弹出一个模式,让您选择要移动到哪个板,我得到的只是是

Oops!
Select the Pins you want to move.


使用:

  • 铬 45.0.2454.101
  • Windows 8.1 64 位


如何重现问题:

  1. 在笔记本电脑或台式电脑上登录您的 Pinterest 帐户。
  2. 选择您的一块板或从头开始构建测试板(这样您就不会丢失当前的任何引脚)。
  3. 点击右上角的“移动”。这将使透明的复选框出现在每个图像的右上角。注意:Pinterest 显示未选中的复选框,其中已经有一个复选标记。您知道一个框已被选中的方式是它保留复选标记并且框背景变为纯红色(不再透明)。
  4. 在您的浏览器中启动您的开发者工具控制台 (Firefox/Chrome: F12)。
  5. 将以下脚本添加到浏览器中的 JavaScript 控制台。
  6. 运行脚本。如果它“有效”,您应该会看到所有复选框现在都是红色的。
  7. 再次单击“更多”按钮。现在您将获得“选择您要移动的 Pin 图”。消息,表明实际上全选不起作用。

注意:我现在不关心分页,但如果有人想解决这个问题,我也愿意接受有关该问题的解决方案。


选择所有图像的脚本:

/* 
   @Repo:     EHW-JavaScript-Pinterest-SelectAllImages.

   @Creator:  Eric Hepperle (CodeSlayer2010/CodeWizard13)
   @Date:     10/15/15
   @Version:  1.0

   @Purpose:  Click "Move" in Pinterest board to move pins.
              Once checkboxes are visible, run this in an
              F12 browser console to automatically check all
              visible image pins. You will have success when
              the color of all checkboxes turns red. Then
              click "Move" again to finish.

    @Notes:
        2015.10.15
            - Created script.
            - Checks all checkboxes, but does not allow moving.

*/

function checkAll() {
    console.log("Checkboxes count: " + checkBoxes.length);

    $.each(checkBoxes, function(i, v) {
      console.log("Checkbox #: " + i)// + " = " + v);
      $(this).addClass('selected');

    });
}

//$(document).ready(function() {
    alert('hi');

    var checkBoxes = $("div > div > div.bulkEditPinWrapper > button");

    checkAll();
//});


我已经尝试解决的问题:

  1. 谷歌搜索解决方案。我找到了以下文章。最后一个看起来可能是我需要的,但它似乎没有足够专注于我的问题。

  2. 最初尝试将每个复选框的“checked”属性设置为“true”,但最终没有选中这些框(为什么??)。但是,然后我在浏览器控制台中观察到,当我单击选择图像时,“选定”类已应用于该图像。因此,我使用 addClass() 将该类应用于我的代码中的所有复选框,然后我能够让所有复选框正确选择......或者看起来如此。

  3. 我通过调用 $(document).ready 尝试了代码,但它给了我错误

    "Uncaught ReferenceError: checkBoxes is not defined(…)"
    


我花了很长时间来格式化这个......在此先感谢您的帮助。如果有任何不清楚的地方,我很乐意澄清。另外,如果这篇文章属于不同的论坛,请告诉我。谢谢。

【问题讨论】:

  • 如果您想对 pinterest.com 进行逆向工程,您将不得不更加努力地工作,逐步完成单击复选框时发生的所有事情。它可能比添加一个类要多得多。此外,您的代码使用全局变量而不是参数(或者更好的是,根本没有参数)。
  • @Amit:感谢您的回复。我不知道我在做“逆向工程”,但这很有帮助,因为它给了我另一个术语,我下次可以用它来搜索 Google。是的,我选择不传递参数并使用全局来排除故障,尽管最佳实践是传递参数。你能解释一下当我点击一个复选框时发生的一切吗?这对我来说不是那么直观,所以在这方面的任何帮助都非常感谢。

标签: javascript jquery ajax reverse-engineering pinterest


【解决方案1】:

我尝试在每个元素上触发 click 事件,它对我来说非常有效。无法尝试使用滚动,因为我的板上没有那么多图像。

function checkAll() {
    console.log("Checkboxes count: " + checkBoxes.length);
    $.each(checkBoxes, function(i, v) {
        console.log("Checkbox #: " + i) // + " = " + v);
        $(this).trigger('click');
    });
}
var checkBoxes = $("div > div > div.bulkEditPinWrapper > button");
checkAll();

让我知道它是否适合你。

【讨论】:

    猜你喜欢
    • 2013-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-01
    • 2023-02-06
    相关资源
    最近更新 更多