从网页中查找第一个URL地址,并使用JS将其用作重定向URL

时间:2014-07-23 20:18:56

标签: javascript string web find url-redirection

我想从此无内容网页中获取此 超链接的网址。基本上嵌入了两个字符串,一个短文本和原始URL;将其视为文本文档,但实际上并非如此。例如:

  

[点击网址] http://www.example.com/

因此,从技术上讲,我想要做的是使用重定向地址的URL,同时排除短文本的干扰。总结一下,它从网页中提取URL并阻止“[CLICK URL]”以便能够使用完整的URL作为重定向地址。

我不太确定,但我认为应该看起来像这样(不完整且不起作用):

<script type="text/javascript">
var web = window.location.href + '?action=raw' // Where the text and URL are located
var txt = web.getElementById(element);
var range = web.createRange();
url = range.selectNodeContents(txt);
window.location.href = url // Used the provided URL for the redirect address
</script>

如您所见,这是一个嵌入式脚本,强烈建议使用外部脚本。 这必须适用于任何长度的URL并进行交叉浏览。谢谢!

2 个答案:

答案 0 :(得分:0)

以下功能将完成您​​的任务。

基本上,javascript会忽略所有文本,除了您在包含id =&#34; MyDiv1&#34;的标记中放置的内容。然后它接受该span标记中包含的任何内容,并尝试重定向到它。

只要在该span标记中放置有效网址,就应该成功重定向。此页面上的任何其他内容都不会中断此功能,除非您创建具有相同ID的另一个元素,这将导致冲突。

[CLICK URL] <span id="MyDiv1">http://www.example.com/</span>

 <script>
   var MyDiv1 = document.getElementById('MyDiv1');
   url = MyDiv1.innerHTML;
   window.location.href = url
  </script>

答案 1 :(得分:0)

如果我理解你,你需要一个Ajax请求。这是一个使用jQuery的例子:

<script>
// fetch the file via a jQuery Ajax request
$.ajax({
    url : "http://localhost/test/file.htm",
    success : function(result){
        // get the <body> content of the file (split with regular expressions)
        var body = result.split(/<body[^>]*>/i)[1].split(/<\/body>/i)[0];
        // split the bits separated by space (" ") and redirect to the 2nd bit (the URL)
        window.location.href = body.split(" ")[1];
    }
});
</script>

请注意,您要获取的文件必须与您的文件位于同一个域中。这意味着&#34; example.com /..."仅当获取脚本也在此域上时才会起作用(出于安全原因,通常不允许跨域请求)。