ユーザーが新しいページ全体を読み込むのではなくリンクをクリックすると、新しいページのHTMLデータがajaxリクエストでロードされます。ナビゲーションバーのデータを毎回送信しないようにする)ajaxリクエストの結果データをDOMParserに渡して、 "content"というIDを持つdivからコンテンツを取得し、現在のドキュメントの "context" divのinnerHTMLを置き換えます。Javascript - DOMパーサーはajaxリクエストをロードし、スクリプトは実行しない
newDOM内のスクリプトタグはコンテンツdivに入れても実行されませんが、この方法でリクエストした後でも、変数「rawhref:あなたは即座に文書を編集するスクリプトを持っている場合、それはあなたが
AjaxRequest(href, function(data) {
var parser = new DOMParser();
var newDOM = parser.parseFromString(data.responseText, "text/html");
//Setup new title
var title = '';
if (newDOM.getElementsByTagName('title').length > 0 && newDOM.getElementsByTagName('title')[0] !== null) {
title = newDOM.getElementsByTagName('title')[0].innerHTML;
} else {
title = rawhref;
}
document.title = title;
history.pushState({}, title, rawhref);
if (newDOM.getElementById('content') === null) {
//If there is an error message insert whole body into the content div to get full error message
document.getElementById('content').appendChild(newDOM.getElementsByTagName('body')[0]);
} else {
document.getElementById('content').appendChild(newDOM.getElementById('content'));
}
MapDOM();
if (typeof(onPageLoad) == "function") {
onPageLoad();
}
});
注newDOMをログアウト効果がないロードしている間のでまた、それはどちらかnewDOMしている間に実行するように見えるん"noheaderのないリクエストURLだけなので、ユーザーは履歴を取り戻すことがより簡単になります。 注:また、新しいロード後には、次の新しいページでこのメソッドを使用できるように、新しいタグを上書きする関数もあります。
また、回答がjQueryを使用しなかった場合は、さらに好ましいでしょう。
新しく追加されたスクリプトタグの_textContent_に 'eval()'を呼び出す必要があります。 – dandavis
@JaromandaX: 'Function'を使うこともできますし、dataURLsはそれが意味するものですか? – dandavis
が必要ですか?あなたはdupeを追加して新しいスクリプトを追加することができますが、jQueryは 'load()'や 'html()'でもeval()を使用しますが、遅いDOMで作業するよりも速くなるはずです... – dandavis