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

时间:2014-09-22 08:52:49

标签: javascript append search-engine

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

代码是JScript .NET,它基本上是Javascript的.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);
        }
    }

对于那些感到困惑的人,它说,如果URI中存在&q=,请将&q=替换/追加&q=test1+test2+test3

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

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

谢谢。

2 个答案:

答案 0 :(得分:2)

识别您的问题

我假设:

  1. 您想使用Fiddler作为您的解决方案(因为您已经在使用它)
  2. 您已经弄明白了如何更改请求URI(如您的示例所示),而您的问题是您希望仅定位那些"搜索"点击了按钮,而不是自动提交的搜索
  3. 隔离那些源于谷歌上按下搜索按钮的请求并不简单,但我想出了一个似乎有效的黑客攻击。基本上,oq(原始查询)获取参数仅在用户明确点击按钮/输入键时添加,因此我们测试其存在以识别此类请求。

    解决方案

    在Fiddler OnBeforeRequest课程中的Handlers方法中(您已经在放置代码的地方),我们会:

    1. 检查请求是否为www.google.com 包含q参数
      • 如果为true,请记录(在提琴日志中)查询已提交给google.com& 以粉色突出显示请求
    2. 检查请求是否包含oq参数(原始查询)
      • 如果为true,则按下提交按钮的日志警报&在Light Forest Green中突出显示请求
    3. 代码

      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的请求可能会更好(它在浏览器中,而不是在小提琴手中)。
      • Modifying a request or response in Fiddler
      • Understanding Fiddlerscript

答案 1 :(得分:1)

在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()方法。