如何使用jQuery + Greasemonkey清除此伪复选框?

时间:2012-08-29 13:31:46

标签: javascript jquery checkbox greasemonkey

我目前正在开发一个网站,需要一个分享按钮到vk.com(俄罗斯Facebook)。

问题是当选中“添加图像”复选框时,共享似乎不起作用。我已经尝试使用Greasemonkey $("input:checkbox").attr('checked', false);,但它没有用 我认为这是因为复选框是使用函数而不是纯HTML创建的。

使用以下功能创建复选框:

if (!window.imageCheck) {
   window.imageCheck = new Checkbox(ge('add_image'), {
     checked: true,
     label: 'add image',
     width: 150,
     onChange: function(val) {
       if (val) {
         showImage(currentImage);
         recountImages();
       } else {
         hide('image_cont', 'select_image');
       }
       doResize(true);
     }
   });
}
doResize(true);

当我查看页面源时,该复选框实际上是一个隐藏的输入。 <input type="hidden" id="add_image" name="add_image" value="1" />我已经尝试过$("#add_image").val("0");希望它会起作用,但仍然没有。

1 个答案:

答案 0 :(得分:0)

将click事件发送到适当的节点应该可以解决问题。类似的东西:

if ( $("#add_image").val()  !=  "0") {
    //--- Assumes #add_image is the user-interactive node (seems doubtful)
    var clickableNode   = $("#add_image");
    var clickEvent      = document.createEvent ('MouseEvents');
    clickEvent.initEvent ('click', true, true);
    clickableNode[0].dispatchEvent (clickEvent);
}


但是,不确定#add_image是否是正确的节点。如果不起作用,请回答以下问题:

  1. ge()函数来自何处?什么图书馆?或者发布源代码,如果它是内联的。
  2. <input id="add_image"...是否在来源中拥有onChange处理程序? Firebug的事件标签显示了什么?
  3. 选中此复选框后,验证#add_image的值为"1",否则为"0"
  4. 链接到目标页面或将其代码保存到磁盘并在pastebin.com链接到该页面。
  5. 此外,a design flaw introduced into Greasemonkey 1.0可能会导致一些问题(即使您不使用jQuery)。尝试将// @grant GM_getValue添加到脚本的Metadata Block