从iframe获取网址并点击修改地址

时间:2015-05-08 11:35:27

标签: javascript iframe

我试图找到一种方法从iframe获取网址并使用javascript修改链接并转移到另一个网页。基本上,iframe中的地址类似于" http://www.somthing.com/12/somt/arr_1.htm" ;,使用javascript我想删除最后五个字符(留下这个&# 34; http://www.somthing.com/12/somt/arr_")然后将下一个逻辑号添加到其中(制作链接此" http://www.somthing.com/12 /somt/arr__2.htm")

到目前为止,我有类似的事情。

    <script language="javascript" type="text/javascript">
    function urlGen(f){
                       var i1 = document.getElementById("iframe_id").contentWindow.location.href;
                       var i2 = "1.htm";
                       var i3 = "2.htm";
                       var newURL = i1 - i2 + i3
                       f.action = i1 - i2 + i3
                       return i1 - i2 + i3;
                       }
</script>

所以根据我所说的理解你看起来应该是这样的? 所以看起来应该是这样的? (请记住我是javascript的森林...&#34;我不是一个聪明人,但我知道java是什么&#34;)

    <script language="javascript" type="text/javascript">
    function urlGen(f){
                       var i1 = document.getElementById("iframe_id").contentWindow.location.href = newURL;
                       newURL = il.slice(0, -5);
                       var i3 = "2.htm";

                       f.action = newURL + i3
                       }
</script>

2 个答案:

答案 0 :(得分:0)

您正在正确抓取网址但是您的字符串操作不起作用。

你有一个特殊的功能来修剪字符串:

 newUrl = i1.slice(0, -5);

这将修剪网址的最后5个字符。

 newUrl = newUrl + i3;

这将使用新的URL连接修改后的URL。

 return newUrl;

现在你做的时候:

 document.getElementById("iframe_id").contentWindow.location.href = newUrl;

它将使用新网址。

以工作示例:

此示例还包含数字添加:

 i1.substr(0,i1.lastIndexOf("_")+1);

该位使用字符串函数substr。它用于检索字符串的一部分。第一个参数是起始位置,而第二个参数标记结束。我使用字符串函数lastIndexOf来查找url中最后使用的下划线的位置,然后添加一个以确保它包含下划线。上面的代码行将打印:

http://stacksnippets.net/arr_

要构建新网址,我们现在需要这个数字。 parseInt在这里帮助你:

(parseInt(i1.substr(i1.lastIndexOf("_")+1), 10)+1)

我将整个部分放在括号之间,因此它将其解析为总和。 parseInt的第一个参数是包含数字(1.htm)的字符串。我们使用substr再次选择此选项。现在起始位置是下划线+ 1.最后一个参数被省略,因为我们可以直到字符串的结尾。 parseInt会将1.htm解析为1。第二个参数用于强制函数使用十进制系统。 (基数10)。总和的最后一部分为数字增加了一个。这段代码的结果将是2

将所有内容合并在一起会给我们:

http://stacksnippets.net/arr_2.htm

function urlGen(f) {
      var i1 = "http://stacksnippets.net/arr_1.htm"; //cannot grab the url because of same origin policy
      //var i1 = document.getElementById("iframe_id").contentWindow.location.href; //
      var newURL = i1.substr(0,i1.lastIndexOf("_")+1) + (parseInt(i1.substr(i1.lastIndexOf("_")+1), 10)+1) + ".htm";
      f.action = newURL;
      return newURL;
    }

     //NOT PART OF THE SOLUTION:

    document.body.onload = function() {
      document.body.innerHTML += "Document initial url: http://stacksnippets.net/arr_1.htm";
      var url = urlGen(new Object); //dummy object
       document.body.innerHTML += "<br />Changed url: " + url;
    }

答案 1 :(得分:0)

尝试使用此正则表达式匹配

var i1 = "http://www.somthing.com/12/somt/arr_41.htm";

s = i1.replace(/\d+\.htm$/, function(attr) {
  return attr.replace(/\d+/, function(val) {
    return parseInt(val,10) + 1;
  });
});


alert(s);

这将改变以X + 1代替X的相同字符串中以X.htm结尾的任何字符串(其中X是数字)(改编自https://stackoverflow.com/a/1742841)。