加载带有链接到div的HTML?

时间:2012-04-19 13:39:01

标签: php jquery html iframe hyperlink

以下是该方案:

我有3个文件:

的index.php

<html><head>
<script type="text/javascript" src="../jquery.js"></script>
<script>
    $(document).ready(function(){
        $("#local").load("FarLinkLoader/farlink.php");
    });
</script>
</head><body>
<div id='local'></div>
</body></html>

/ FarLinkLoader / farlink.php

<div>
<a href="farfar/farfarlink.php">farfarlink</a>
</div>

/ FarLinkLoader / farfar / farfarlink.php

text or whatever

问题是当 farlink.php 加载到 index.php farlink.php 变为无效,链接的引用来自 index.php ,而不是来自前一个文件。

这周围有吗? iframe 擅长这一点,实际上是浏览器中的“浏览器”,因为通过iframe加载的页面有从那里引用的邻居文件/目录而不是前一页面中的页面是在ajax请求的情况下加载。

更换此所需功能的各种可能性有哪些?

期待的感谢!

2 个答案:

答案 0 :(得分:1)

我知道您已经说过“绝对网址不是解决方案”,但是如果您的所有文件都驻留在同一台服务器上,那么您可以使用非相对的网址,并且这些网址不是指定域名的绝对网址绝对到服务器的根目录,因此无论它们包含在哪个页面,它总是引用同一个文件。只需使用前面的“/”字符和从根到每个文件的完整路径。

答案 1 :(得分:-1)

我想您可以添加一个小jQuery来自动更新已加载页面中的所有URL(未经测试):

$(document).ready(function(){
    $('#local').load('FarLinkLoader/farlink.php', function() {
        $('#local').find('a').each(function() {
            $(this).attr('href', function(i,val) {
                if (val.substr(0,1)!=='/' && val.substr(0,7)!=='http://') {
                    return 'FarLinkLoader/'+val;
                } else {
                    return val;
                };
            });
        });
    });
});

您可以在文档标题中添加<base href="...">标记,但这会影响整个文档中的所有相对链接,可能不太理想。