如果之前已经提出这个问题,请提前道歉。我确实在网上找到了一些类似的问题,但我仍然无法找到答案。你可以说我从未处理过基本HTML之外的任何事情。所以任何帮助都会受到赞赏。
我有一个HTML文件(Say text.html)仅供个人使用。在文件中,将有一个用于输入文本的输入框和一个提交按钮。我希望如果我点击提交,它会根据输入文本从外部网页打开一个特定的超链接。我想这就像Google的“我感觉很幸运”。
示例:如果用户输入“测试”并单击“提交”,则应该从“https://www.google.com/search?q=test”页面打开第二个结果
这是我的HTML:
<!DOCTYPE html>
<html>
<body style="background-color:beige">
<h1 style="text-align:center"><font size="14">Test</font></h1>
<style type="text/css">
</style>
<form id="form">
<div align="center" style="vertical-align:bottom">
<input type="text"
value="Test"
id="input"
style="height:50px;width:200px;font-size:14pt;">
</div>
</form>
<TABLE BORDER="0">
<TD><button class="button" id="button01">SUBMIT</button></TD>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#button01').click(function(e) {
var inputvalue = $("#input").val();
window.open("https://www.google.com/search?q="+inputvalue);
});
</script>
此外,以下是我要打开的超链接所在页面上div元素的示例:
<div id="XYZ" class="contentEditValue" style="float:left;width:180px;">
<a href="2nd result link from google search" target="_self" title="2nd result">2nd Result</a>
</div>
我已经读过它可以通过PHP或Jquery来实现,除了它们不是我曾经做过的事情。非常感谢您提前寻求帮助!
同样感谢任何其他选择。
答案 0 :(得分:1)
您遗漏了});
以关闭ready()
功能
<script type="text/javascript">
$(document).ready(function(){
$('#button01').click(function(e) {
var inputvalue = $("#input").val();
window.open("https://www.google.com/search?q="+inputvalue);
});
});
</script>
答案 1 :(得分:1)
由于安全性,您不应该这样做。如果可以(从iframe读取内容,其他浏览器窗口......),攻击者可以将JS键盘记录添加到您的网上银行登录或在Facebook上阅读您的消息。 CORS(https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS)用于阻止这些请求,如果网站没有明确说明您可以对其内容进行某些操作,那么大多数浏览器都不会允许您这样做。
答案 2 :(得分:0)
以下是如何在PHP中执行此操作的基本示例。
将JavaScript / JQuery从图片中删除,我们只是说你有一个基本形式:
<form>
<input type="text" value="Test" name="input">
<input type="submit">
</form>
如果未在action
标记上指定method
或<form>
属性,则表单将对其所在页面的URL发出HTTP GET请求,因此对于此示例,PHP代码将与表单位于同一页面上。 Here's a more detailed description of sending form data if you're interested.
现在你有办法将输入传递给PHP脚本*,这个问题有三个基本部分。
使用包含输入的查询字符串向您想要的页面发出请求
http_build_query
是一种构建正确编码的查询字符串以与请求一起使用的简便方法。对于此示例,我们将使用file_get_contents
发出请求。还有其他方法可以做到,包括cURL,但让我们保持简单。
$query = http_build_query(['q' => $_GET['input']]);
$page = file_get_contents('http://www.example.com/?' . $query);
我没有在这个例子中使用Google,因为在响应中找到正确的链接并遵循它们会有点复杂。 (部分是因为他们真的不希望你这样做。)
在回复中找到您想要的链接
Don't try to find the link in the response with regex。你会遇到问题,回到Stack Overflow尝试解决它们,人们会告诉你不应该使用正则表达式,所以只需跳过那部分并use a DOM parser。
$doc = new DomDocument;
$doc->loadHTML($page);
$links = $doc->getElementsByTagName('a');
$url = $links[0]->getAttribute('href');
我使用getElementsByTagName()
来查找链接,但如果页面更复杂,xpath query会更好用。此外,我使用了第一个链接($links[0]
),因为example.com只有一个链接。如果存在,$links[1]
会为您提供第二个链接。
点击链接
header("Location: $url");
exit;
如果一切顺利,你最终会到达你想去的地方。但是有很多事情可能会出错。如果您正在请求您无法控制的资源,它可以随时更改而不会向您发出任何预先警告,因此找到该链接的代码可能会停止工作。您可能会被阻止提出请求。从这样的网站刮取链接违反了许多网站上的服务条款,因此请事先检查一下。您可能会发现该网站提供了一个网络API,它应该是一种 更好的方式来访问其内容。
*你
您只需将URL中的输入参数传递给您的页面即可。