2010-03-18 20 views
0

好的,當談到JS(我不是最偉大的程序員)時,我有一點n00b,所以請溫柔 - 特別是如果我的問題是我已經在某個地方問過了,我太傻了,找不到正確的答案。自我貶低,讓我們來看看這個問題。Javascript/Greasemonkey:搜索的東西然後設置結果作爲值

問題

有一個網站我和一大羣朋友經常使用它不顯示所有的信息,我們可能會想知道 - 在這種情況下,機票預訂網站和旅行艙位。

雖然信息被隱藏在頁面的代碼中,但它不會顯示給用戶的任何位置。

使用Greasemonkey腳本,我想解開這條信息並以合適的格式顯示它。

這是我正在做的事情的psuedocode。對於指定的元素

  • 搜索DOM
  • 定義變量
  • 查找文本字符串
  • 如果發現
    • 設置結果給一個變量
    • 寫內容頁面的特定位置(在指定div之前)
  • 如果沒有找到
  • 什麼都不做

我想我已經實現了大部分至今,除了關鍵位:

搜索字符串:頁面需要搜索以下在頁面HEAD一段文字:

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

如果任何人都可以幫助我,或指出我在正確的方向完成這件事,我會很感激。

回答

1

我需要提取和存儲是第二個等號之間(=)符號和最後一個引號(「)的內容。

你的意思」是第二個等號之間(=)符號和最後的報價(「)」?

而且我認爲這樣的:

mileageRequest += "&CLASSES=S,S-S,S-S"; 

是在腳本標籤?

如果是的話那麼它看起來像會有所謂mileageRequest頁面上的JS變量,您可以從Greasemonkey的訪問與unsafeWindow.mileageRequest,並假設您可以訪問你想要的東西,如數據:

// 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 
} 
相關問題