在页面上有一个链接,它使用两个参数调用名为submitForm
的方法;该方法使用参数设置表单值,然后提交表单。
我使用GreaseMonkey(GM)脚本(下面)和jQuery从链接的href
属性中解析和访问这些参数,然后我想自动提交表单。我尝试了三种方法(注释掉了),但似乎没有一种方法可行,所以我想我对通用汽车的运作方式缺少了一些看法。
$(document).ready(function() {
var regex = /\'([0-9]+)\',\'([0-9]+\'/g;
var link = $('td.dataContend:first a');
var match = regex.exec($(link).attr('href'));
if (match != null) {
$('input[name="field1"]').val(match[1]);
$('input[name="field2"]').val(match[2]);
try {
// 1. The next line says "document.submitForm is not a function"
//document.submitForm(match[1], match[2]);
// 2. The next line says "document.billViewForm is undefined"
//document.billViewForm.submit();
// 3. The next line throws no error but the page does not change
//$('form[name="billViewForm"]').trigger('submit');
}
catch (err) {
alert(err);
}
} else {
alert('no match');
}
});
我已经确认直到try / catch块正常工作;正则表达式正确解析值,jQuery更改表单字段值。
方法1.和2.因为某些原因看起来无法从GM访问document
的错误失败。如果我使用FireBug控制台并输入1.或2.页面提交完美。这真的吓坏了我,因为我之前能够毫无问题地访问该文档。
方法3.不会抛出错误,但页面不会刷新表单提交的结果。我也试过使用.submit()
方法,但无济于事。如果我在FireBug控制台中输入3.,则会收到有关$('form...
未定义的错误。
似乎通过使用jQuery我无法访问正常的javascript document
属性,并且表单的.submit()
方法不起作用。
感谢任何敏锐的眼睛或富有洞察力的建议!
答案 0 :(得分:1)
您无法以通常的方式访问GM中窗口的用户定义属性。 如果您想访问页面内的节点,请始终使用DOM方法。
如果您需要在GM中访问窗口的用户定义属性,则需要使用unsafeWindow - 对象
这意味着:
//1->submitForm is a user-defined function
unsafeWindow.document.submitForm(match[1], match[2]);
//2->use DOMDocument::getElementsByName() to access the form
document.getElementsByName('billViewForm')[0].submit();
//3-> jQuery is a user-defined object
unsafeWindow.$('form[name="billViewForm"]').trigger('submit');