Javascript:单击“提交/搜索”按钮后,将字符串附加到搜索查询

Javascript:单击“提交/搜索”按钮后,将字符串附加到搜索查询,javascript,append,search-engine,Javascript,Append,Search Engine,在这种情况下,让我们以谷歌为例: 代码是JScript.NET,它基本上是Javascript的.NET版本。不管使用哪种语言,任何有附加技能的人都可以回答我的问题 此代码用于FiddlerIt的中间人代理 if (oSession.uriContains("&q=")) // oSession is a Fiddler object session // uriContains() function, checks for case-insensitive string from th

在这种情况下,让我们以谷歌为例:

代码是JScript.NET,它基本上是Javascript的.NET版本。不管使用哪种语言,任何有附加技能的人都可以回答我的问题

此代码用于FiddlerIt的中间人代理

if (oSession.uriContains("&q=")) // oSession is a Fiddler object session // uriContains() function, checks for case-insensitive string from the URI
    {
        var str = oSession.fullUrl;
        var sAppend = "test1+test2+test3";
        if (!oSession.uriContains(sAppend))
        {
            oSession.fullUrl = str.replace( "&q=","&q="+sAppend);
        }
    }
对于那些感到困惑的人,它说,如果URI中存在&q=,那么用&q=test1+test2+test3替换/追加&q=

问题:当它在URL中看到&q=时,会立即追加test1+test2+test3

基本上,我如何让它等待,直到我点击提交/搜索按钮


谢谢。

在Javascript中,您可以将动作绑定到事件。在您的情况下,事件是提交表格,例如:

function addEventsToHTML(){
    var form1 = document.getElementById('form1');
    form1.onsubmit = submitHandler;
    function submitHandler(){
        alert("You just submit: "+this.email.value);
    }
}
如果要在单击时绑定,可以执行以下操作:

object.onclick=function(){myScript};

注意:Internet Explorer 8和早期版本不支持addEventListener方法。

确定您的问题 我假设:

您想在解决方案中使用Fiddler,因为您已经在使用它了 您已经了解了如何更改示例中所示的请求URI,您的问题是,您希望只针对单击搜索按钮的那些请求,而不是自动提交的搜索 隔离那些来自谷歌上被按下的搜索按钮的请求并不简单,但我想出了一个似乎有效的方法。基本上,oq原始查询get参数仅在用户显式点击按钮/回车键时添加,因此我们测试其存在性以识别此类请求

解决方案 在Fiddler Handlers类中的OnBeforeRequest方法中,您已经在放置代码,我们将:

检查请求是否发送到www.google.com并包含q参数 如果为true,请登录fiddler日志,说明已将查询提交到google.com& 以粉红色突出显示请求 检查请求是否包含oq参数原始查询 如果为true,则记录已按下提交按钮的警报,并以浅绿色突出显示请求 密码 其他说明: 我假设您希望将查询字符串前置到现有的q值,即q=Hello将变成q=test1+test2+test3Hello。如果你想替换它,你需要更多的正则表达式。 根据您的需要,Naomi或Ahmed的请求可能更好—它在浏览器中,而不是在fiddler中。
你可以将你的代码附加到提交事件吗?我的附加技能类型因语言而异。我想专门在谷歌搜索上测试这段代码。我该怎么做呢?去css-tricks.com这样的网站我选择这个是因为我不确定Google表单ID是否是自动生成的,所以你可能不会总是得到相同的ID。总之,只需在控制台中键入此命令并尝试搜索document.getElementById'search-form'。addEventListenerclick,函数{alert'OK'};您的解决方案非常适合我。另外,FiddleApplication.Log.LogString实际上做什么?代码是否需要运行?非常感谢。LogString语句只是在fiddler日志中输出一条消息;这里主要用于演示/调试&不,您不需要它。更改背景颜色也是一样的-这只是一个视觉指示器,表明您的脚本正在按预期工作&这不是必需的,但我建议保留它,这在我看来很有用。请检查此链接,非常类似的问题:请参阅上面“其他注释”下的最后两个参考资料。你不仅上了钓鱼课,还上了钓鱼课。现在去把线放下,不要再要鱼了你一个接一个地要求提供完全有效的解决方案&看起来你并不是在试图自己寻找解决方案。我看不到任何鱼,我需要找到一个好的钓鱼点。:-只是疑问,是否可以删除服务器通过Fiddler发送的一个小URL参数?一个暗示就好了。非常感谢。
object.addEventListener("click", myScript);
if(oSession.HostnameIs('www.google.com') && oSession.uriContains("&q=")){
    FiddlerApplication.Log.LogString('query submitted to google.com...');
    oSession['ui-backcolor'] = 'pink'; //highlight this request

    //test for original query
    if(oSession.uriContains('&oq=')){
        FiddlerApplication.Log.LogString('SUBMIT BUTTON OR ENTER CLICKED (probably)');
        oSession['ui-backcolor'] = '#369369'; //highlight in Light Forest Green
        //whatever sort of request manipulation you want to do here...
    }

}