我试图找到一种方法从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>
答案 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)。