2

.load()とについて混乱してい$.ajaxます。私の中には次のjQueryコードがありますindex.html

$('.load_ext').click(function(e) {    
    var url = $(this).attr("href");
    parentContainer.append($(document.createElement("div")).load(url + ' #content_to_load').html('<p class="loading">Loading&#8230;</p>').hide().fadeIn('slow'));
})

およびHTML:

<a href="test.html" class="load_ext">test</a>

test.html上記の例では、 (idのコンテンツ)から部分的なコンテンツを読み込んでい#content_to_loadます。また、そのページのタイトルを取得してtest.html、タイトルページをそのページに置き換えたいと思いindex.htmlます。

私は次のようなことをしてみました:

var url = $(this).attr("href");
parentContainer.append($(document.createElement("div")).load(url + ' #content_to_load', function() { 
     console.log($(document).attr('title'));
}).html('<p class="loading">Loading&#8230;</p>').hide().fadeIn('slow'));

運がない。現在のページタイトルが表示されます。次のような操作でタイトルを置き換えるにはどうすればよいですか。

$('title').text(newPageTitle);

ありがとう!


編集: @ Jeff Schafer、@ dystroy、@ zeroflagLのおかげで、私はこの問題を解決することができました。変更されたコードは次のとおりです。

var url = $(this).attr("href");
parentContainer.append($(document.createElement("div")).load(url + ' #content_to_load', function(responseText) {
  var title = responseText.match(/<title>([^<]*)/)[1];
  document.title = title;
}).html('<p class="loading">Loading&#8230;</p>').hide().fadeIn('slow'));
4

3 に答える 3

3

の主な問題loadは、jQueryがDOMフラグメントを構築するときに、本体ではないものを削除することです。これを使用して、離れたページのタイトルを取得できます。

$.get(url, function(html){
    var matches = html.match(/<title>([^<]*)/);
    if (matches.length>0) {
        var title = matches[1];
        document.title = title;
    }
});

離れたページが別のオリジンからのものであり、クロスドメインリクエストを特に許可していない場合、これは機能しないことに注意してください。

于 2013-03-13T14:50:44.720 に答える
2

新しいページのタイトルは、responseTextから取得できます。

.load(url + ' #content_to_load', function(responseText) {

repsonseTextただし、ページのソースコードは文字通りテキストです。たとえば、正規表現を使用して、のタイトルを抽出できますtest.html。次に、でタイトルを変更できますdocument.title = newTitle

于 2013-03-13T14:50:35.487 に答える
1

このコードを試してページタイトルを変更してください

document.title = newPageTitle;

それが役に立てば幸い

于 2013-03-13T14:36:36.510 に答える