0

这是场景:

我有 3 个文件:

索引.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 请求。

替换此所需功能的各种可能性是什么?

期待感谢!

4

2 回答 2

1

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

于 2012-04-19T14:36:22.383 回答
-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="...">标签,但这会影响整个文档中的所有相关链接,并且可能是不可取的。

于 2012-04-19T13:52:54.307 回答