草庐IT

javascript - 选择Pinterest上的所有图像以移至另一 block 板

coder 2024-07-16 原文

更新:(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.



使用:
  • Chrome 45.0.2454.101
  • Windows 8.1 64位



  • 如何复制问题:
  • 在便携式计算机或台式计算机上登录到您的Pinterest帐户。
  • 选择您的一块评估板或从头开始构建测试板(这样就不会松动任何当前的引脚)。
  • 单击右上 Angular 的“移动”。这将使透明的复选框出现在每个图像的右上 Angular 。注意:Pinterest会显示其未选中的复选框,其中已经带有复选标记。您知道复选框已被选中的方式是,它保留复选标记,并且复选框背景变为稳定的红色(不再是透明的)。
  • 在浏览器中,启动开发人员工具控制台(Firefox/Chrome:F12)。
  • 将以下脚本添加到浏览器的JavaScript控制台中。
  • 运行脚本。如果它“工作”,您应该会看到所有复选框现在都是红色的。
  • 再次单击“更多”按钮。现在,您将获得“选择要移动的销钉”。消息,表明实际上全选不起作用。

  • 注意:目前我不关心分页,但是如果有人想解决这个问题,我也愿意就此问题寻求解决方案。



    脚本选择所有图像:

    /* 
       @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();
    //});
    



    我已尝试解决的问题:
  • 用Google搜索解决方案。我找到了以下文章。最后一个似乎是我需要的,但似乎没有足够集中于我的问题。
  • StackOverflow | jQuery to add a class to image links without messing up when the link passes variables
  • Quora | Pinterest User Feedback: Can you provide options to "select multiple pins and pin them into a board" or "to pin an image into multiple boards at a time"?
  • StackOverflow | Identify & Extract the title/description of an Image (Data Scraping Pinterest)
  • StackOverflow | Get all images from a board from a Pinterest web address
  • 最初尝试将每个复选框的“checked”属性设置为“true”,但最终并未选中该复选框(为什么?)。但是,然后我在浏览器控制台中观察到,当我单击以选择图像时,“选定”类将应用于该图像。因此,我使用addClass()将该类应用于代码中的所有复选框,然后我就能够使所有复选框正确选择,然后……似乎如此。
  • 我尝试了对$(document).ready的调用的代码,但是它给了我错误
    "Uncaught ReferenceError: checkBoxes is not defined(…)"
    



  • 我花了我一整天的时间来格式化它……在此先感谢您的帮助。我很高兴澄清是否有不清楚的地方。另外,请让我知道此帖子是否属于其他论坛。谢谢。

    最佳答案

    我尝试在每个元素上触发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();
    

    请让我知道这对你有没有用。

    关于javascript - 选择Pinterest上的所有图像以移至另一 block 板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33158863/

    有关javascript - 选择Pinterest上的所有图像以移至另一 block 板的更多相关文章

    1. ruby - 如何以所有可能的方式将字符串拆分为长度最多为 3 的连续子字符串? - 2

      我试图获取一个长度在1到10之间的字符串,并输出将字符串分解为大小为1、2或3的连续子字符串的所有可能方式。例如:输入:123456将整数分割成单个字符,然后继续查找组合。该代码将返回以下所有数组。[1,2,3,4,5,6][12,3,4,5,6][1,23,4,5,6][1,2,34,5,6][1,2,3,45,6][1,2,3,4,56][12,34,5,6][12,3,45,6][12,3,4,56][1,23,45,6][1,2,34,56][1,23,4,56][12,34,56][123,4,5,6][1,234,5,6][1,2,345,6][1,2,3,456][123

    2. ruby-on-rails - 渲染另一个 Controller 的 View - 2

      我想要做的是有2个不同的Controller,client和test_client。客户端Controller已经构建,我想创建一个test_clientController,我可以使用它来玩弄客户端的UI并根据需要进行调整。我主要是想绕过我在客户端中内置的验证及其对加载数据的管理Controller的依赖。所以我希望test_clientController加载示例数据集,然后呈现客户端Controller的索引View,以便我可以调整客户端UI。就是这样。我在test_clients索引方法中试过这个:classTestClientdefindexrender:template=>

    3. ruby - RSpec - 使用测试替身作为 block 参数 - 2

      我有一些Ruby代码,如下所示:Something.createdo|x|x.foo=barend我想编写一个测试,它使用double代替block参数x,这样我就可以调用:x_double.should_receive(:foo).with("whatever").这可能吗? 最佳答案 specify'something'dox=doublex.should_receive(:foo=).with("whatever")Something.should_receive(:create).and_yield(x)#callthere

    4. ruby-on-rails - Enumerator.new 如何处理已通过的 block ? - 2

      我在理解Enumerator.new方法的工作原理时遇到了一些困难。假设文档中的示例:fib=Enumerator.newdo|y|a=b=1loopdoy[1,1,2,3,5,8,13,21,34,55]循环中断条件在哪里,它如何知道循环应该迭代多少次(因为它没有任何明确的中断条件并且看起来像无限循环)? 最佳答案 Enumerator使用Fibers在内部。您的示例等效于:require'fiber'fiber=Fiber.newdoa=b=1loopdoFiber.yieldaa,b=b,a+bendend10.times.m

    5. ruby-on-rails - date_field_tag,如何设置默认日期? [ rails 上的 ruby ] - 2

      我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问

    6. ruby-on-rails - 跳过状态机方法的所有验证 - 2

      当我的预订模型通过rake任务在状态机上转换时,我试图找出如何跳过对ActiveRecord对象的特定实例的验证。我想在reservation.close时跳过所有验证!叫做。希望调用reservation.close!(:validate=>false)之类的东西。仅供引用,我们正在使用https://github.com/pluginaweek/state_machine用于状态机。这是我的预订模型的示例。classReservation["requested","negotiating","approved"])}state_machine:initial=>'requested

    7. ruby-on-rails - openshift 上的 rails 控制台 - 2

      我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新ruby​​gems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems

    8. ruby - Nokogiri 剥离所有属性 - 2

      我有这个html标记:我想得到这个:我如何使用Nokogiri做到这一点? 最佳答案 require'nokogiri'doc=Nokogiri::HTML('')您可以通过xpath删除所有属性:doc.xpath('//@*').remove或者,如果您需要做一些更复杂的事情,有时使用以下方法遍历所有元素会更容易:doc.traversedo|node|node.keys.eachdo|attribute|node.deleteattributeendend 关于ruby-Nokog

    9. ruby-on-rails - 相关表上的范围为 "WHERE ... LIKE" - 2

      我正在尝试从Postgresql表(table1)中获取数据,该表由另一个相关表(property)的字段(table2)过滤。在纯SQL中,我会这样编写查询:SELECT*FROMtable1JOINtable2USING(table2_id)WHEREtable2.propertyLIKE'query%'这工作正常:scope:my_scope,->(query){includes(:table2).where("table2.property":query)}但我真正需要的是使用LIKE运算符进行过滤,而不是严格相等。然而,这是行不通的:scope:my_scope,->(que

    10. ruby-on-rails - Rails - 从另一个模型中创建一个模型的实例 - 2

      我有一个正在构建的应用程序,我需要一个模型来创建另一个模型的实例。我希望每辆车都有4个轮胎。汽车模型classCar轮胎模型classTire但是,在make_tires内部有一个错误,如果我为Tire尝试它,则没有用于创建或新建的activerecord方法。当我检查轮胎时,它没有这些方法。我该如何补救?错误是这样的:未定义的方法'create'forActiveRecord::AttributeMethods::Serialization::Tire::Module我测试了两个环境:测试和开发,它们都因相同的错误而失败。 最佳答案

    随机推荐