7

在 Google+ 中,用于发表评论的按钮是由 div 制成的:

<div role="button" id=":1vq.post" class="d-s-r tk3N6e-e tk3N6e-e-qc" aria-disabled="false" style="-webkit-user-select: none; " tabindex="0">Post comment</div>  

我想我可以点击它:

document.getElementById(":1vq.post").click(); 

但它说元素没有属性click,我发现它onclick是空的。那么我怎么能点击带有 JavaScript 的按钮呢?

4

3 回答 3

4

编辑:在与开始这个问题的 wong2 聊天并且对该问题的真正含义进行了很多失败的猜测(这个问题写得很糟糕)之后,他们试图做的是编写一个 Greasemonkey 用户脚本来制作输入键按 Google+ 信息流中的“发表评论”按钮。由于我还没有 Google+ 的邀请,我什至看不到相关代码,所以我无能为力。这个问题不是关于将任何与 Google+ 相关的内容放入您自己的网站 - 它是关于尝试使用 Greasemonkey 在您自己的浏览器中修改 Google 网站的行为。

早期的帮助尝试:

id=":1vq.post" 不是合法的 CSS id 名称。您不能在选择器名称中使用“:”字符。这会导致多个问题,因为它不仅不是合法字符,而且在 CSS 选择器语法中也是一个有意义的字符。所以,我看到你有两个问题。

首先,您的选择器逻辑不起作用。其次,正如其他人所说,您不能使用普通的javascript(例如,没有框架)以这种方式分配点击。

如果您更改选择器逻辑以使其正常工作,则可以使其正常工作(使用 jQuery),如下所示:

<div role="button" id="aPost" class="d-s-r tk3N6e-e tk3N6e-e-qc" aria-disabled="false" style="-webkit-user-select: none; " tabindex="0">Post comment</div>

$("#aPost").click(function() {
    alert("I was clicked.");
});

而且,您可以在这个 jsFiddle 中看到它的实际效果:http: //jsfiddle.net/jfriend00/Yfnc7/。单击运行,然后单击发表评论。

于 2011-07-02T19:11:18.793 回答
2

click()仅适用于 和 之类的input元素button

http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-2651361

onclick将出现在 1990 年,而不是在谷歌。他们应该使用addEventListener.

尝试设置断点并查看单击时调用的函数。然后直接调用函数。


要触发单击事件处理程序,可以使用createEventdispatchEvent

参见示例:http: //jsfiddle.net/DzVg9/

请注意,Google Plus 可能实际上正在使用mousedownmouseup事件。

于 2011-07-02T17:00:38.720 回答
0

你确定你用 accurately 选择按钮$(":1vq.post")吗?也许您需要将其更改为$("#:1vq.post")或类似的东西(我不确定 JQuery 如何处理:and.字符)。

于 2011-07-02T17:05:09.697 回答