Javascript/Greasemonkey:搜索某些内容,然后将结果设置为值

Javascript/Greasemonkey:搜索某些内容,然后将结果设置为值,javascript,regex,greasemonkey,Javascript,Regex,Greasemonkey,好吧,我在JS方面有点像n00b(我不是最伟大的程序员),所以请温柔一点——特别是如果我的问题已经被问到了某个地方,而我太笨了,找不到正确的答案。别自嘲了,让我们开始讨论这个问题 问题 有一个我和一大群朋友经常使用的网站,它没有显示我们可能想知道的所有信息——在本例中是一个航空公司预订网站和旅行类别 虽然信息隐藏在页面的代码中,但它不会显示给用户 使用Greasemonkey脚本,我想释放这段信息并以合适的格式显示它 这是我要做的事的密码 在dom中搜索指定的元素 定义变量 查找文本字符串 如

好吧,我在JS方面有点像n00b(我不是最伟大的程序员),所以请温柔一点——特别是如果我的问题已经被问到了某个地方,而我太笨了,找不到正确的答案。别自嘲了,让我们开始讨论这个问题

问题

有一个我和一大群朋友经常使用的网站,它没有显示我们可能想知道的所有信息——在本例中是一个航空公司预订网站和旅行类别

虽然信息隐藏在页面的代码中,但它不会显示给用户

使用Greasemonkey脚本,我想释放这段信息并以合适的格式显示它

这是我要做的事的密码

  • 在dom中搜索指定的元素
  • 定义变量
  • 查找文本字符串
  • 如果找到
    • 将结果设置为变量
    • 将内容写入特定位置的页面(在指定div之前)
  • 如果找不到
  • 无所事事
到目前为止,我认为我已经完成了大部分工作,除了以下关键部分:

搜索字符串:页面需要在页眉中搜索以下文本:

mileageRequest += "&CLASSES=S,S-S,S-S";
我需要提取和存储的内容位于第二个等号(=)和最后一个逗号(“)之间。此区域的内容可以是A-Z之间的任何字母

我并不担心将其拆分为一个数组,以便在此阶段可以单独使用这些元素

  • 将结果写入一个位置:将找到的文本片段写入另一个位置
到目前为止的代码

这是我到目前为止提出的,并突出显示了缺失的部分

buttons = document.getElementById('buttons');
''Search goes here
var flightClasses = document.createElement("div");
flightClasses.innerHTML = '<div id="flightClasses"> ' +
        '<h2>Travel classes</h2>' +
        'For the above segments, your flight classes are as follows:' +
        'write result here' +
        '</div>';
main.parentNode.insertBefore(flightClasses, buttons);
buttons=document.getElementById('buttons');
“搜索就在这里
var flightClasses=document.createElement(“div”);
flightClasses.innerHTML=''+
“旅行班”+
'对于上述航段,您的航班等级如下:'+
'在此处写入结果'+
'';
main.parentNode.insertBefore(FlightClass、按钮);
如果有人能帮我,或者给我指出正确的方向来完成这件事,我将不胜感激

我需要提取和存储的内容位于第二个等号(=)和最后一个逗号(“)之间

你的意思是“在第二个等号(=)和最后一个引号(“”)之间”

我假设:

mileageRequest += "&CLASSES=S,S-S,S-S";
是否在脚本标记中

如果是这样的话,那么页面上似乎会有一个名为
MilWangeRequest
的JS变量,您可以通过
unsafeWindow从Greasemonkey访问该变量。MilWangeRequest
并假设您可以通过以下方式访问所需的数据:

// check that the mileageRequest variable exists
if(unsafeWindow.mileageRequest){
  // it exists
  var myString = unsafeWindow.mileageRequest.match(/&CLASSES=([^&=]*)/i);
  if(myString){
    // my string exists
    myString = myString[1];
  }
  else{
    // my sting does not exist
  }
}
else {
  // it does not exist
}
或者您可以尝试:

var myString = document.getElementsByTagName('head')[0].innerHTML.match(/mileageRequest\s*\+=\s*"&CLASSES=([^"]*)";/i);
if(myString){
  // my string exists
  myString = myString[1];
}
else{
  // my string does not exist
}