【问题标题】:How do I clear this pseudo-checkbox using jQuery + Greasemonkey?如何使用 jQuery + Greasemonkey 清除这个伪复选框?
【发布时间】:2012-08-29 13:31:46
【问题描述】:

我目前正在开发一个网站,该网站需要一个分享按钮到 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"); 希望它会起作用,但仍然没有。

【问题讨论】:

  • 我看不出标题和问题之间的关系... Greasemonkey?分享什么怎么做?

标签: javascript jquery checkbox greasemonkey


【解决方案1】:

向适当的节点发送点击事件应该可以解决问题。比如:

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 的 Events 选项卡显示什么?
  3. 当复选框被选中时验证#add_images 的值为"1",否则验证"0"
  4. 链接到目标页面或将其代码保存到磁盘并通过pastebin.com链接到它。

另外,a design flaw introduced into Greasemonkey 1.0 可能会导致一些问题(即使您不使用 jQuery)。尝试将// @grant GM_getValue 添加到脚本的Metadata Block

【讨论】:

    猜你喜欢
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    • 2012-06-15
    • 2013-04-17
    • 2023-03-19
    • 2013-11-25
    • 1970-01-01
    相关资源
    最近更新 更多