0

シナリオは次のとおりです。

私は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.phpfarlink.phpindex.php

とにかくこれの周りにありますか?iframeはこれが得意で、実際にはブラウザ内の「ブラウザ」でした。これは、iframeを介して読み込まれたページには、前のページ内のページからではなく、そこから参照される隣接ファイル/ディレクトリが含まれていたためです。 ajaxリクエスト。

この必要な機能を置き換えるさまざまな可能性は何ですか?

期待してくれてありがとう!

4

2 に答える 2

1

「絶対URLは解決策ではない」とおっしゃっていましたが、すべてのファイルが同じサーバー上にある場合は、相対的ではなく、指定されたドメインでは絶対的ではないが、サーバーのルートであるため、含まれているページに関係なく、常に同じファイルを参照します。前の「/」文字と、ルートから各ファイルへのフルパスを使用するだけです。

于 2012-04-19T14:36:22.383 に答える
-1

ロードされたページのすべてのURLを自動的に更新するために小さなjQueryを追加できると思います(テストされていません):

$(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 に答える