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