繁体   English   中英

Javascript:点击提交/搜索按钮后,在搜索查询中附加一个字符串

[英]Javascript: Append a string to search query after clicking submit/search button

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

代码是JScript .NET,它基本上是Java的.NET版本。 无论语言如何,具有附加技能的任何人都可以回答我的问题。

该代码在Fiddler (这是中间人代理)

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);
        }
    }

对于那些谁是混淆,它说,如果&q=存在于URI,替换/追加&q=&q=test1+test2+test3

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

基本上,如何让它等到单击提交/搜索按钮之后

谢谢。

确定您的问题

我假设:

  1. 您想使用Fiddler解决方案(因为您已经在使用它)
  2. 您已经找到了如何更改请求URI(如示例中所示)的方法,问题是您只想定位那些单击了“搜索”按钮的请求 ,而不是自动提交的搜索

隔离那些由于在Google上按下搜索按钮而产生的请求并不是一件容易的事,但我想出了一个可行的方法。 基本上, 仅当用户显式按下button / enter键时才添加 oq (原始查询)get参数,因此我们测试其是否存在以识别此类请求。

在Fiddler Handlers类的OnBeforeRequest方法中(您已经在其中放置代码了),我们将:

  1. 检查请求是否发送到www.google.com包含q参数
    • 如果为true,请在提琴手日志中记录一个查询已提交给google.com,并以粉红色突出显示该请求
  2. 检查请求是否包含oq参数 (原始查询)
    • 如果为true,则记录警报,提示按下了提交按钮并以浅林绿色突出显示请求

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...
    }

}

其他说明:

  • 我假设你想你的查询字符串前面加上现有的q值,即q=Hello将成为q=test1+test2+test3Hello 如果要替换它,则需要更多正则表达式。
  • 根据您的需求,Naomi或Ahmed的请求可能会更好(在浏览器中,而不是提琴手中)。
  • 在Fiddler中修改请求或响应
  • 了解Fiddlerscript

在JavaScript中,您可以将动作绑定到事件。 在您的情况下,事件是表单的submit ,例如:

function addEventsToHTML(){
    var form1 = document.getElementById('form1');
    form1.onsubmit = submitHandler;
    function submitHandler(){
        alert("You just submit: "+this.email.value);
    }
}

如果要在单击时绑定它,可以执行以下操作:

object.onclick=function(){myScript};

要么

object.addEventListener("click", myScript);

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM