2

我想使用这个函数在 div 元素中加载我的页面内容:

function loadmypage(DIV, pageURL)
{
var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById(DIV).innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET", pageURL ,true);
xmlhttp.send();
}

但是,当我单击“框架”本身内的链接时,该功能不起作用。我猜目标元素与加载页面本身位于不同页面的原因。

所以我的问题是:有没有办法让 div 元素在框架本身内加载整个页面时表现得像 iframe?

PS:出于安全原因,我不允许使用 iFrame,也不允许出于效率原因使用 jQuery。主页中的链接正常加载目标,当我单击这些页面内的任何链接时会出现问题。

 <div id="nav" class="mmenu">
                                <ul type="none">

                                            <li><a  href= "javascript:loadmypage('viewMessages.php')">Messages</a></li>
                                            <li><a  href= "javascript:loadmypage('userHomepage.php')">My Conferences</a></li>
                                            <li><a  href= "javascript:loadmypage('availableConferences.php')">Conferences</a></li>
                                            <li><a  href= "javascript:loadmypage('incomingRequests.php')">Requests</a></li>
                                            <li><a  href= #>News</a></li>
                                            <li><a  href= #>Options</a></li>


                                        </ul>
                                    </div>
                            </fieldset>

                                        <div id="collabsoft" class="collabsoft">
4

2 回答 2

3

您的链接不起作用,因为您缺少 div 参数。注意你的功能:

function loadmypage(DIV, pageURL)
{
...

第一个参数是 DIV,您只传递了 pageURL。

<li><a  href= "javascript:loadmypage('viewMessages.php')">Messages</a></li>
                                            <li><a  href= "javascript:loadmypage('userHomepage.php')">My Conferences</a></li>
                                            <li><a  href= "javascript:loadmypage('availableConferences.php')">Conferences</a></li>
                                            <li><a  href= "javascript:loadmypage('incomingRequests.php')">Requests</a></li>
于 2012-05-09T21:08:03.187 回答
0

<div><iframe>如果您想象这样的事情,则无法通过任何设置或切换来使其表现得像这样。毕竟,如果你想<iframe>,你应该使用<iframe>.

无论如何,不​​起作用的链接可能使用相对寻址。这是对页面内部链接的合理期望。为了让他们在您的页面上工作,您必须使用绝对地址。

所以如果你加载了页面

www.example.com/somedirectory/index.php

它使用了

<link href="style.css" >

你必须使用

<link href="www.example.com/somedirectory/style.css" >

等等

因此,您可以遍历 DOM 树,使用某个属性中的地址查找,link和所有其他元素,检查这些属性,检查它们是否使用绝对地址(可以使用正则表达式完成,但我不想给你一个现在,因为有很多可能性:,甚至),如果没有,绝对引用它们(通过将整个路径添加到下载文档所在的网页和目录的前面)。aimghttp://something...www.something.com/...localhost/...

您可以使用递归函数遍历 DOM 树,首先访问document.body每个访问的节点,并为其所有子元素调用该函数。尽管在您的情况下,您可以利用document.getElementsByTagName来准确获取您需要的特定元素的列表。

最后,请注意,出于安全原因,脚本必须包含在同一主机(IP 甚至端口)中。因此,来自其他网站的脚本将无法为您远程引用。您也必须将它们下载到您的服务器上。

TLDR:您不需要 jQuery,但使用<iframe>.

于 2012-05-09T21:18:06.350 回答