如何更改 AJAX 驱动的页面中<输入>的名称字段
How to change the name field of an <input> in an AJAX-driven page?
对于此目标页面(抱歉,SO不允许超链接到62.0.54.118):
http://62.0.54.118/search?&q=42&oq=42&sourceid=chrome&ie=UTF-8&filter=0
,我想默认使用用户脚本更改<input>
的名称字段。
输入为:
<input class="gsfi" id="lst-ib" name="q" maxlength="2048" value="42"...>
我想将其更改为:
<input class="gsfi" id="lst-ib" name="&q" maxlength="2048" value="42"...>
也就是说,我想默认在输入的name
字段中将q
更改为&q
。
我尝试编写一个脚本(这不起作用):
// ==UserScript==
// @name Normal Google Input
// @include http://62.0.54.118/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
// @require https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant GM_addStyle
// ==/UserScript==
/*- The @grant directive is needed to work around a design change
introduced in GM 1.0. It restores the sandbox.
*/
waitForKeyElements ("input[name*='q']", changeLinkQuery);
function changeLinkQuery (jNode) {
var oldName = jNode.attr ('name');
var newName = oldName.replace (/'q/, "&q");
jNode.attr ('name', newName);
return true;
}
此外,该页面是 Ajax 驱动的页面。
请修复我的坏脚本或帮助我编写另一个脚本,谢谢。
更新:我通过将脚本的一行从:
var newName = oldName.replace (/'q/, "&q");
自
var newName = oldName.replace (/q/, "&q");
然后我的脚本效果更好。感谢@Gerard塞克斯顿的建议。
但是现在有一个新的错误,waitForKeyElements
回调设置为页面的 AJAX return true;
,它会不间断地添加&
。
它导致此字段name="&&&&&&&&&q"
,等等。
我该如何解决它?
如果输入名称本身只是q
,则只需将waitForKeyElements调用更改为:
waitForKeyElements ("input[name='q']", changeLinkQuery);
这样它就会准确地寻找q
,而不是字符串中任意位置的q。
如果这不是该<input>
的名称,请在下面评论。
相关文章:
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 而循环只设置php中输入字段中的第一个值
- 在输入字段中将最小金额设置为
- 如何在输入字段中的按钮的帮助下打开日历,该字段的类型为“=”;日期”;
- 如何在HTML输入字段中添加不可删除的后缀
- 互斥单选按钮和相应的输入字段
- 在IE9中的输入字段中输入焦点最近按钮
- 选中单选框时将属性添加到输入字段
- 当设置addFromAutocompleteOnly时,剩余文本将保留在输入字段中
- 我如何在数字插入中使用逗号,这样它就不会'不要破坏我的输入字段
- 在输入字段上有两个函数调用,一个在Blur上,一个不在Angular中
- 输入字段将't获取更新的值
- 如何选择多个输入字段并删除所需的属性
- 输入字段,只接受0到12之间的数字
- 单击鼠标,用MySQL数据填充html表单输入字段
- 使用jquery将输入字段转换为文本
- Model中的Typeahead返回空值以形成输入字段
- 如何从查询字符串中的输入字段发回文本
- 如何验证日期、月份和日期的3个独立输入字段;年使用jquery或javascript
- 将值传递给jquery创建的输入字段