我有一个ifram,里面有很多链接,我正在尝试将这些链接正确地复制到我的主页面。我当前的代码复制了链接。例如,如果 iframe中的实际超链接是这样的:
<a href="./ok/doit.php"> 5 </a>
在将其复制到主页后,超链接变为如下:
http://ok.mysite24.com/spring/./ok/doit.php
所以在点击主页面内的链接后,我会转到死链接而不是实际链接。有没有通过正确复制iframe内容或我应该修改我的iframe内容来解决这个问题?
<script type='text/javascript'>
function getFrameContents(){
var iFrame = document.getElementById('myframe');
var iFrameBody;
if ( iFrame.contentDocument )
{ // FF
iFrameBody = iFrame.contentDocument.getElementsByTagName('body')[0];
}
else if ( iFrame.contentWindow )
{ // IE
iFrameBody = iFrame.contentWindow.document.getElementsByTagName('body')[0];
}
alert(iFrameBody.innerHTML);
document.getElementById('response').innerHTML = iFrameBody.innerHTML
}
</script>
<iframe id ='myframe' src='http://www.mysite.com/ok.php'></iframe>
<div id="response">
<p><a href="#" onMouseDown="getFrameContents()">getFrameContents! </a></p>
答案 0 :(得分:1)
在所有链接上检索innerHTML循环之前,用他们的JS-href-property替换他们的DOM-href-attribute。这会将href属性转换为绝对URI。
//clone the body to keep the original untouched
iFrameBody = iFrameBody.cloneNode(true);
var links = iFrameBody.getElementsByTagName('a');
for (var i = 0; i < iFrameBody.getElementsByTagName('a').length; ++i) {
if (links[i].hasAttribute('href')) {
links[i].setAttribute('href', links[i].href);
}
}
答案 1 :(得分:-1)
看起来您想要将一个相对地址解析为iframe的源地址,该地址也可能是相对的。 Psuedo代码(ish):k
function resolveAddress(source, link) {
if(link.indexOf("../") == 0) {
index--; // go up one directory .//
return resolveAddress(source.substr(0,source.lastIndexOf("/")-1),
link.substr(1, link.length-1));
}
else if(link.indexOf("./") == 0) {
// reduce to current directory ./
return resolveAddress(source.substr(0,source.lastIndexOf("/"),
link.substr(2, link.length-1));
}
return source + link;
}
frame_src = "http://www.mysite.com/ok.php"
link = "./ok/doit.php";
resolveAddress(frame_src, link);
//=> "http://www.mysite.com/ok/doit.php"