2010-01-09 47 views
0

傳遞給Value =「」我的硬盤上有一個.htlm文件,這是我的書籍列表,頂部有一個表格和腳本,可以讓我搜索文件的內容。我喜歡在瀏覽時訪問此文件。我使用擴展名爲「Advanced URL Builder」的Firefox,該擴展允許我突出顯示幾個字,然後使用上下文菜單選擇Find with ... \ Google或我已編程的任何其他站點。其中一個是我自己的文件,這會打開搜索框上的光標焦點,但不會出現文字。如何將URL的末尾以格式

的URL,當我打開網頁看起來是這樣的:

file:///F:/MyBooks.htm?search_txt=War and Peace 

後的SEARCH_TEXT?就是我在「高級網址構建器」已編程 等號(=)之後的部分是從以前的網站或網頁

我使用這種形式和腳本,我從一個網站拿起高亮文本:

<form name="search" action="file:///F:/MyBooks.htm" method="post" 

onSubmit="if(this.t1.value!=null && this.t1.value!='') 
findString(this.t1.value);return false"> 

<input type="text" name="t1" id="search_txt" size=100 value="" /> 
<input type="submit" value="Find" name=b1> 
</form> 

<script language="JavaScript"> 
<!-- 
var TRange=null 

function findString (str) { 
if (parseInt(navigator.appVersion)<4) return; 
var strFound; 
if (window.find) { 

    // CODE FOR BROWSERS THAT SUPPORT window.find 

    strFound=self.find(str); 
    if (strFound && self.getSelection && !self.getSelection().anchorNode) { 
    strFound=self.find(str) 
    } 
    if (!strFound) { 
    strFound=self.find(str,0,1) 
    while (self.find(str,0,1)) continue 
    } 
} 
else if (navigator.appName.indexOf("Microsoft")!=-1) { 

    // EXPLORER-SPECIFIC CODE 

    if (TRange!=null) { 
    TRange.collapse(false) 
    strFound=TRange.findText(str) 
    if (strFound) TRange.select() 
    } 
    if (TRange==null || strFound==0) { 
    TRange=self.document.body.createTextRange() 
    strFound=TRange.findText(str) 
    if (strFound) TRange.select() 
    } 
} 
else if (navigator.appName=="Opera") { 
    alert ("Opera browsers not supported, sorry...") 
    return; 
} 
if (!strFound) alert ("String '"+str+"' not found!") 
return; 
} 
//--> 
</script> 

我需要的是能夠在URL的最後部分傳遞到形式的4號線作爲一個變量

<input type="text" name="t1" id="search_txt" size=100 value="War and Peace" /> 

能否請你幫忙嗎?

謝謝。

回答

0

您可以使用the Javascript function described here解析從URL的值:

function getParameterValue(name) { 
    name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); 
    var regexS = "[\\?&]"+name+"=([^&#]*)"; 
    var regex = new RegExp(regexS); 
    var results = regex.exec(window.location.href); 
    if(results == null) 
    return ""; 
    else 
    return results[1]; 
} 

你會在您的腳本功能,那麼你可以使用一個onload JavaScript調用設置的值如下:

document.getElementById("search_text").value = getParameterValue("search_text"); 

踢,這裏是一個完整的HTML頁面,設置SEARCH_TEXT參數到文本字段值:

<html> 
<head> 
<script> 
    function getParameterValue(name) { 
     name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); 
     var regexS = "[\\?&]"+name+"=([^&#]*)"; 
     var regex = new RegExp(regexS); 
     var results = regex.exec(window.location.href); 
     if(results == null) 
      return ""; 
     else 
      return results[1]; 
    } 

    function setSearchText() { 
     document.getElementById("search_text").value = getParameterValue("search_text"); 
    } 
</script> 
</head> 
<body onload="setSearchText();"> 
    <input type="text" name="t1" id="search_text" size=100 value="" /> 
</body> 
</html> 
0

我通過修改上面的腳本解決了%20的問題,只有1行 - 感謝Kaleb和我使用部分代碼完成工作的所有其他代碼。

<script> 
function getParameterValue(name) { 
    name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); 
    var regexS = "[\\?&]"+name+"=([^&#]*)"; 
    var regex = new RegExp(regexS); 
    var results = regex.exec(unescape(window.location.href)); 
    if(results == null) 
     return ""; 
    else 
     return results[1]; 
} 

function setSearchText() { 
     document.getElementById("search_text").value = getParameterValue("search_text"); 
} 

變種結果= regex.exec(UNESCAPE(window.location.href)); 通過改變這一行的單詞「unes​​cape」現在文本傳遞到沒有%20的搜索框。

+0

如果你非常感謝,那麼爲什麼你不'接受'他的回答,以便a)他會得到信用,b)每個人都看到這個問題已經得到回答。 – mkoistinen 2010-09-09 22:36:43