我为Facebook制作了非常受欢迎的UserJS,但是自从FF 3.6.13版本起它不起作用(对于那个版本)。我只是不知道如何点击这些元素:
<input value="Accept" type="submit" name="something... asdf" />
?单击此类按钮并使用鼠标重定向到另一页。
我的脚本所做的是使用Xpath搜索此类元素,然后使用简单的acceptbutton.click();
它适用于Opera,Chrome和FF&lt; 3.6.13,但在最新版本中没有任何反应。我也尝试了fireEvent和eventFire函数,我在stackoverflow上找到了这些函数,这对我经常有帮助,但这次他们不能。
可能使用JQuery的click()
函数会有所帮助,但我不能在我的userjs中使用jquery。
我也尝试了acceptbutton.form.submit();
,但它将我重定向到了错误的页面。
编辑:
好的我正在添加代码片段
var acceptbuttons = xpath(document,'//label[@class="uiButton uiButtonConfirm"]/input');
for (var i = 0; i < acceptbuttons.snapshotLength; i++) {
//will search for particular accept button
var acceptbutton = acceptbuttons.snapshotItem(i);
var acceptbuttonName = acceptbutton.getAttribute("name");
if(acceptbuttonName.indexOf(urlPart)!=-1)
{
// it founds button but function below do nothing in FF
acceptbutton.click();return;
}
}
感谢您的帮助!
答案 0 :(得分:1)
您可以使用最新Firefox中提交按钮的click()
方法。你还有别的错。您是否在表单上有一个阻止点击工作的onsubmit事件,或者您是否有错误的按钮?
我通过在Firefox 3.6.13的位置栏中粘贴javascript: document.getElementById('submit-button').click(); void(0);
来提交此内容。这个想法归功于此:JavaScript auto-POST with NAME
答案 1 :(得分:0)
嗯,不会做一个简单的document.whatever formname.submit();诀窍呢?
答案 2 :(得分:0)
如果acceptbutton.form.submit();
因为value="Accept"
部分未发送而无效,那么为什么不添加隐藏的输入呢?
var hiddenInput = document.createElement('input');
hiddenInput.type = 'hidden';
hiddenInput.name = acceptbutton.name;
hiddenInput.value = acceptbutton.value;
acceptbutton.form.appendChild(hiddenInput);
acceptbutton.form.submit();