Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将iframe内容正确加载到<;主页中的div(相同的域iframe)?_Javascript_Html_Iframe - Fatal编程技术网

Javascript 如何将iframe内容正确加载到<;主页中的div(相同的域iframe)?

Javascript 如何将iframe内容正确加载到<;主页中的div(相同的域iframe)?,javascript,html,iframe,Javascript,Html,Iframe,我有一个ifram,其中有很多链接,我正试图将这些链接正确地复制到我的主页上。我当前的代码不直接复制链接 在iframe中,实际的超链接如下所示: <a href="./ok/doit.php"> 5 </a> 因此,在我的主页中点击这些链接后,我转到死链接,而不是实际链接。是否可以通过正确复制iframe内容来解决此问题,还是应该修改iframe内容 <script type='text/javascript'> function getFrameCon

我有一个ifram,其中有很多链接,我正试图将这些链接正确地复制到我的主页上。我当前的代码不直接复制链接 在iframe中,实际的超链接如下所示:

<a href="./ok/doit.php"> 5 </a> 
因此,在我的主页中点击这些链接后,我转到死链接,而不是实际链接。是否可以通过正确复制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>

函数getFrameContents(){
var iFrame=document.getElementById('myframe');
变异体;
if(iFrame.contentDocument)
{//FF
iFrameBody=iFrame.contentDocument.getElementsByTagName('body')[0];
}
else if(iFrame.contentWindow)
{//IE
iFrameBody=iFrame.contentWindow.document.getElementsByTagName('body')[0];
}
警报(iFrameBody.innerHTML);
document.getElementById('response').innerHTML=iFrameBody.innerHTML
}


看起来您希望将一个相对地址解析为iframe的源地址,这也可能是相对的。伪代码(ish):k


在检索所有链接上的innerHTML循环并将其DOM href属性替换为JS href属性之前。这将把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);
    }
}
//克隆主体以保持原始主体不变
iFrameBody=iFrameBody.cloneNode(true);
var links=iFrameBody.getElementsByTagName('a');
对于(var i=0;i
谢谢您的回复。但如何在将这些动态链接输出到主页之前替换它们呢?你能告诉我如何在我的代码中调用你的函数吗?此外,为什么要将完全错误的url传递给escpaePath函数?我们不应该只将部分传递给escapePath函数吗?document.getElementById('response')。innerHTML=escapePath(iFrameBody.innerHTML);你的意思是我应该将iframe php内容从php内部修改为完整路径?但我不想使用完整路径!不,iFrame的主体仍然是一个节点,您可以使用javascript修改它。您可以在这里找到大量的主题,从中可以看出,使用字符串方法(例如,使用PHP)解析文档是一种不好的做法。用JS做这件事并没有多大的好处,但用DOM方法解析文档或节点是一种很好的方法。观看演示:感谢演示。但我想在主页点击链接就像iframe!在您的演示中,您刚刚发布了正确的链接html代码!我没有发布,这是javascript转换的结果。出于演示目的,我选择打印源代码,当然您也可以将结果与innerHTML一起使用
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"
//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);
    }
}