我的硬盘上有一个.htlm文件是我的书籍列表,顶部有一个表单和一个脚本,可以让我搜索文件的内容。我喜欢在浏览时访问此文件。我使用扩展名为“高级URL生成器”的Firefox,这个扩展允许我突出显示几个单词然后使用上下文菜单选择查找与... \ Google或我编程的任何其他网站。其中一个是我自己的文件,这会在搜索框上打开光标焦点,但不会显示任何文本。
打开页面时的URL如下所示:
file:///F:/MyBooks.htm?search_txt=War and Peace
之后的search_text?是我在“高级URL生成器”中编写的 =符号后面的部分是上一个网站或页面中突出显示的文本
我正在使用我从网站上获取的此表单和脚本:
<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 :(得分:0)
您可以使用the Javascript function described here来解析网址中的值:
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>
答案 1 :(得分:0)
我通过修改上面的脚本只解决了一行来解决%20的问题 - 感谢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");
}
var results = regex.exec(unescape(window.location.href)); 现在,通过单词“unescape”更改此行,文本将进入不带%20的搜索框。