对于此目标页面(对不起,但是SO不允许超链接到62.0.54.118):
http://62.0.54.118/search?&q=42&oq=42&sourceid=chrome&ie=UTF-8&filter=0
,我想在<input>默认情况下使用用户脚本更改名称字段。
<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"...>
也就是说,我想默认将输入的字段更改q为。&q``name
q
&q``name
我尝试编写一个脚本,(不起作用):
// ==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 Sexton提出的建议。
但是现在出现了一个新错误,该页面的AJAX 的waitForKeyElements回调设置return true;为,它添加了&不间断。
waitForKeyElements
return true;
&
它将导致该字段为name="&&&&&&&&&q",等等。
name="&&&&&&&&&q"
我该如何解决?
如果输入名称q本身就是just ,则只需将waitForKeyElements调用更改为:
waitForKeyElements ("input[name='q']", changeLinkQuery);
这样它就可以 精确 查找q,而不是在字符串中的任何位置查找aq。
如果这不 完全是 该名称<input>,请在下面评论。