他の回答にもかかわらず、JavaScript からこれを行うことを主張する場合は、次のモジュールを使用します。
(function xload (slctr) { //================================================== xload ===
function xloader (src, dst) {
if (arguments.length == 1) {
dst = src;
src = dst.getAttribute ('data-source') || '';
}
var req;
try {
src = src.match (/^([^]*?)(!)?(?:\[\[([^]*?)\]\])?$/);
(req = new XMLHttpRequest ()).open ('GET', src[1], !src[2]);
req.onreadystatechange = function (ev) {
if (this.readyState === 4) {
if (typeof dst == 'function')
dst (req);
else {
dst[dst.tagName == 'TEXTAREA' ? 'value' : 'innerHTML'] = this.responseText;
[].forEach.call (dst.getElementsByTagName ('SCRIPT'), function (s, i) {
var script = document.createElement ('script');
script.innerHTML = s.parentNode.removeChild (s).innerHTML;
document.body.appendChild (script);
})
}
}
};
src[3] && req.overrideMimeType &&
req.overrideMimeType (src[3]);
req.send (null);
} catch (err) { console.log ('xloader error : ', err); }
}
[].forEach.call (document.querySelectorAll (slctr), function (el) { xloader (el); });
}) ('[data-source]'); //------------------------------------------------------ xload ---
属性div
を持つ要素など、すべての要素が処理されます。data-source
はdata-source
、含めるファイルの URL を指定します。Ajax リクエストが完了すると、コンテンツ全体div
がフェッチされたテキストに置き換えられます。data-sourc
必要に応じて、urlの後に同期ロードを示し、次にと!
で囲まれた Mime タイプを続けることができます。[[
]]
読み込まれたテキスト内のすべてのスクリプトが抽出され、ドキュメントの本文に挿入されます。
エラー状態はコンソールに報告されます。
モジュールは完全にスタンドアロンで、data-source
属性を含むすべての要素を処理します。もちろん、ページの HTML テキストの後にロードする必要があります。