3

次のコードを使用して、div 内に html ページをロードしています。

$("#htmlViewer").load("conversion_test/to_convert_3264/"+getPageName(pageCount)+".htm", function(response, status, xhr) {
                   if (status == "error") {
                     /* var msg = "Sorry but there was an error: ";
                     $("#error").html(msg + xhr.status + " " + xhr.statusText); */
                     jAlert('Unexpected Error : Please try again later', 'Alert');
                     pageCount--;
                   }
                 });

上記のコードでは、HTML テキストのみを取得していますが、そのページの CSS と画像は取得していません。CSS を取得するために、別の Ajax リクエストを追加しました。これがないと、ajax 呼び出しで読み込まれたページに css スタイルが適用されません。

$.ajax({
            url:"conversion_test/to_convert_3264/style.css",
            success:function(data){
                 $("<style></style>").appendTo("head").html(data);
            }
        })

これが正しい方法かどうかはわかりません。問題は、ajax 呼び出し中に画像を取得できないことです。画像はconversion_test/to_convert_3264/imagesフォルダから取得されます。どんな助けでも大歓迎です。詳細が必要な場合はお知らせください。

前もって感謝します。

4

2 に答える 2

2

@MiikaLの提案に基づいてようやく修正しました。以下は、問題を解決するための私のコードです。

function replaceImageSource() {
       $("img").each( function(){
              $(this).attr({
                 src: 'conversion_test/to_convert_3264/' + $(this).attr('src')
              });
            });
    }

これが誰かを助けることを願っています。ご協力ありがとうございます。

于 2012-08-23T07:30:37.067 に答える
2

これを答えとして書くので、コメントスレッドだけよりも少し明白です:

問題は、呼び出し元のページが呼び出されるページと同じフォルダーにないことです。ターゲット ページは相対パスで画像を参照するため、呼び出しページに挿入すると、それらの参照は一致しなくなります。つまり、ページのコンテキストが変更されました。

考えられる解決策は 2 つあります。

  1. コンテキストが問題にならないように、画像には絶対パスを使用してください。
  2. jQuery を使用して、受信した html のパスを修正します (Dilip は自分の答えでこのコードを思いつきました)。
于 2012-08-23T07:36:36.260 に答える